普通数组
1.数组的定义
在Linux shell中定义一个普通的数组很简单,首先我们先给数组命名(当然要符合所有的命名规则咯)。定义数组的一般格式就是: array_name=(element1 element2 element3 ...)
数组名=(元素1 元素2 元素3 。。。)
数组的定义用的是圆括号,和python中的tuple元组定义是相似的,但是元祖中的值一旦被定义就不能被改变,但是linux shell 中的数组值是可以被改变的。还有就是预先赋值的变量之间使用的是空格隔开的。
同样我们需要注意的是在linux shell 中所有的赋值语句也就是等号前后是不能有空格的,因为空格会被当做是命令来处理。
除了上述的定义方法之外,我们还可以直接采用index-value 索引-值 的这种方式来定义一个数组:
如下图所示:
2.数组的引用
定义了数组我们当然是要用的咯,那么我们要引用一个数组中的某个元素时(元素的索引同样和大部分的计算机语言一样是从0开始的)用的语句是${array_name[index]}
${数组名[数组的索引下标]}
如下图所示:
我们定义了一个数组然后要打印出某个特定的元素:
当然如果我们要引用的是定义的数组的所有元素,我们要用的方法如下所示:
如果我们要获取出数组的长度,我们可以用下面的方法:
${#array_name[*]} 或者是 ¥{#array_name[@]}
下图是打印出数组的长度:
关联数组
从Bash 4.0引入了关联数组,也就是索引可以是文本,是不是感觉有点像字典那种数据结构
首先我们必须要申明一下这个数组是关联数组,然后再使用
declare -A array_name
关联,英文是association 所以简写为 —A 我是这么记忆的
然后我们可以给这个数组赋值,同样是两种方法
第一种方法
array_name=([index1]=val1 [index2]=val2)
第二种方法
array_name[index1]=val1
array_name[index2]=val2
举一个例子运用一下咯:
如果我们需要知道关联数组的索引以及这个数组中元素的个数我们可以用下面的这个方法: