«

Shell基础教程04 数组

Linux-man.cn 发布于 阅读:39 技术文章


数组是将多个独立的数据存储为一个集合

索引数组

一般用数字作为键的数组叫做索引数组

1、定义一个数组:

ss@ANDROID:~$ array=(a b c d e f)

这些值将会存储在以0为起始索引的连续位置上,对应关系如下:

a  b  c  d  e  f
|  |  |  |  |  |
0  1  2  3  4  5

2、打印特定元素的内容:

ss@ANDROID:~$ echo ${array[2]}
c
ss@ANDROID:~$

看上面的对应关系,索引为2对应的刚好是c

3、打印出数组中所有的值:

ss@ANDROID:~$ echo ${array[*]}
a b c d e f
ss@ANDROID:~$

将索引数字位置改为"*"号或"@"符将打印出数组内所有的值,你试下"@"符吧。

关联数组

一般用字符串作为键的数组叫做关联数组

1、在定义关联数组前需要使用declare命令声明为关联数组,这是bash4.0(shell的一种)后才引入的功能。

将变量arr声明关联数组:

ss@ANDROID:~$ declare -A arr

注意:声明前arr不能是索引数组

2、定义一个关联数组:

ss@ANDROID:~$ arr=([a]="小米" [b]="锤子" [c]="华为")

3、打印特定元素:

ss@ANDROID:~$ echo ${arr[b]}
锤子
ss@ANDROID:~$

4、打印数组中所有的值:

ss@ANDROID:~$ echo ${arr[@]}
小米 锤子 华为
ss@ANDROID:~$

和索引数组一样也"*"、"@"都行

补充

打印数组有多少个元素(数组长度)的语法:

ss@ANDROID:~$ echo ${#array[*]}

打印数组全部索引的语法:

ss@ANDROID:~$ echo ${!array[*]}

更改数组指定索引的值,我们还以上面定义的arr数组为例:

ss@ANDROID:~$ echo ${arr[*]}
小米 锤子 华为
ss@ANDROID:~$ arr[c]="oppop"
ss@ANDROID:~$ echo ${arr[*]}
小米 锤子 oppop
ss@ANDROID:~$

“华为”被换成了“oppop”(没用过oppop手机,应该是拼错了^_^)

索引数组和关联数组以上语法通用,赶快试下吧!

总结

bash linux shell 数组