200 ? "200px" : this.width)!important;}
-->

:介绍

在shell4.0之后支持普通数组和关联数组,普通数组只能使用整数作为索引,关联数组可以使用字符串作为索引。

普通数组

普通数组的定义方法有如下两种,注意数组的索引是从0开始

方法1:值之间是使用空格隔开

array=(1 2 3 4 5)

方法2:直接定义索引-值的方法,其实该方法相当于是在给数组元素赋值。

array[0]="value"

array[1]="value"

1.查看单个数组元素值,值的下标从0开始。

[root@localhost backup]# echo ${array[]}

2.查询数组所有元素的值,使用*或者@

[root@localhost backup]# echo ${array[*]}

[root@localhost backup]# echo ${array[@]}
    

3.查询数组元素的个数,#

[root@localhost backup]# echo ${#array[*]}

4.改变数组元素的值

[root@localhost backup]# array[2]="33"
[root@localhost backup]# echo ${array[*]}

5.定义索引并引用

[root@localhost backup]# i=
[root@localhost backup]# echo ${array[$i]}

6.查询数组的索引,使用!

[root@localhost backup]# echo ${!array[*]}
    

关联数组

普通数组的索引只能是整数,比如array[0],array[1]等,关联数组的索引可以是字符串,使用关联数组之前必须先声明关联数组。

声明关联数组:

declare -A ass_array

将元素添加到关联数组,方法有两种:

方法1:列表发赋值

ass_array=( [index1]=val1 [index2]=val2)

方法2:单独赋值

ass_array[index1]=val1

ass_array[index2]=val2

举例:

declare -A ass_array
ass_array=([book]="10 yuan" [pen]="1 yuan")

1.显示单个数组元素内容

[root@localhost backup]# echo ${ass_array[book]}
yuan

2.查询关联数组所有元素内容

echo ${ass_array[*]}
yuan yuan

3.查询关联数组的索引,在数组前使用!

[root@localhost backup]# echo ${!ass_array[*]}
pen book

4.查询关联数组的元素个数

[root@localhost backup]# echo ${#ass_array[*]}

动态数组生成方法

方法1:

可以使用seq

[root@localhost backup]# numarray=$(seq )
[root@localhost backup]# echo $numarray

方法2:

[root@localhost backup]# echo {..}
                                                                                                   

这两种定义的动态数组可以直接在循环中调用,例如:

for i in $mumarray;do echo $i;done;

for i in {..};do echo $i;done;

测试二者的效率,可以在其前面加上time

time echo $(seq )

real    0m0.056s
user 0m0.047s
sys 0m0.002s
time echo {..}

real    0m0.030s
user 0m0.023s
sys 0m0.000s

测试10000个元素,显然第二种方法性能会更好。

总结

普通数组和关联数组只是定义的方法不一样,查询的方法是一样的。

备注:

作者:pursuer.chen

博客:http://www.cnblogs.com/chenmh

本站点所有随笔都是原创,欢迎大家转载;但转载时必须注明文章来源,且在文章开头明显处给明链接。

《欢迎交流讨论》

Linux 数组的更多相关文章

  1. Linux数组array基础

    Linux数组array基础[${a[*]}和$a的区别] Bash中,数组变量的赋值有两种方法: (1) name = (value1 ... valuen) 此时下标从0开始 (2) name[i ...

  2. Linux数组基础

    执行结果:

  3. Linux 驱动开发

    linux驱动开发总结(一) 基础性总结 1, linux驱动一般分为3大类: * 字符设备 * 块设备 * 网络设备 2, 开发环境构建: * 交叉工具链构建 * NFS和tftp服务器安装 3, ...

  4. shell脚本变量

    既然是变量,自然分变量名和变量值,在使用的时候一定要注意哪些地方需要用变量名,哪些地方需要用变量的值. 自定义变量 shell变量不需要声明,随用随定义,给变量赋值的时候要注意 shell是空格敏感的 ...

  5. 01 shell编程之变量定义

    一.SHELL介绍 ㈠ 什么是shell脚本? 简单来说就是将需要执行的命令保存到文本中,按照顺序执行.它是解释型的,意味着不需要编译. 若干命令 + 脚本的基本格式 + 脚本特定语法 + 思想= s ...

  6. Linux Shell数组常用操作详解

    Linux Shell数组常用操作详解 1数组定义: declare -a 数组名 数组名=(元素1 元素2 元素3 ) declare -a array array=( ) 数组用小括号括起,数组元 ...

  7. php数组函数,字符串,linux命令

    1>> Linux常用命令一. 文件目录操作命令1. ls命令    命令格式:ls [选项] [目录名]    命令功能:列出目标目录中所有的子目录和文件.2. 命令格式:cd [目录名 ...

  8. 如何在linux Shell脚本里面把一个数组传递到awk内部进行处理

    前段时间和几位同事讨论过一个问题:Shell脚本里面怎样把一个数组传递到awk内部进行处理? 当时没有找到方法.前两天在QQ群里讨论awk的时候,无意间又聊起这个话题.机缘巧合之下找到一个思路,特此分 ...

  9. Linux, Mac下Shell 数组 Array 的修理工

    我的测试基本都是在Mac,及Unix环境下测试的,如无特别注明,默认就是Mac 不论你看到这篇随笔是被shell array的奇淫巧技,还是发现shell array就在一对{}里面就可以做那么多勾当 ...

随机推荐

  1. Tp field 字段是可以添加函数的

    $info = M('Order')->alias('a') ->field('count(DISTINCT(a.order_user_id)) as buy_user_num,count ...

  2. c3p0三种配置方式(automaticTestTable)

    c3p0的配置方式分为三种,分别是http://my.oschina.net/lyzg/blog/551331.setters一个个地设置各个配置项2.类路径下提供一个c3p0.properties文 ...

  3. javascript:history.go()和History.back()的区别(转载)

    javascript:history.go()和History.back()的区别       <input type=button value=刷新 onclick="window. ...

  4. javascript鸭式辩型法实现接口

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/ ...

  5. $(function(){})、$(document).ready(function(){})....../ ready和onload的区别

    1.window.onload 当一个文档完全下载到浏览器中时,会触发 window.onload 事件. 这意味着页面上的全部元素对 javascript 而言都是可以访问的,这种情况对编写功能性的 ...

  6. 闲来无事——第一弹 Java基础 基本数据类型

    一个优秀的Java类一定要去优质的名称,类的命名主要有字母和数字,并且必须以字母开头:虽然说没有明确规定类名首字母要大写,但是实际上如果出现首字母小写的类名,那就呵呵了,坐等挨骂吧!类名首字母大写是业 ...

  7. 一台MySQL服务器启动多个端口

    一台MySQL服务器启动多个端口 在测试Mysql多主一从服务器,即一个从服务器多端口同步不同主库.本文记录了开启不同端口的操作. 详细步骤: 1.首先要先把my.cnf配置文件复制一份,开几个端口要 ...

  8. 1、在MAC上搭建React Native开发环境

    @import url(http://i.cnblogs.com/Load.ashx?type=style&file=SyntaxHighlighter.css);@import url(/c ...

  9. Oracle查看用户操作sql语句以及数据库日志

    --查看日志文件 select member from v$logfile; --查看表空间使用情况 SELECT SUM(bytes) / (1024 * 1024) AS free_space, ...

  10. (转)深度分析Linux下双网卡绑定七种模式

    现在一般的企业都会 使用双网卡接入,这样既能添加网络带宽,同时又能做相应的冗余,可以说是好处多多.而一般企业都会使用linux操作系统下自带的网卡绑定模式,当然现在 网卡产商也会出一些针对window ...