shell 数组

定义数组
在 Shell 中,用括号来表示数组,数组元素用"空格"符号分割开。

定义数组的一般形式为: 数组名
=(值1 值2 ... 值n)
例如: array_name
=(value0 value1 value2 value3) 或者 array_name=( value0 value1 value2 value3 ) 还可以单独定义数组的各个分量: array_name[0]=value0 array_name[1]=value1 array_name[n]=valuen 可以不使用连续的下标,而且下标的范围没有限制。


 

获取数组中的所有元素

使用@ 或 * 可以获取数组中的所有元素,例如:


#!/bin/bash
my_array[0]=A
my_array[1]=B
my_array[2]=C
my_array[3]=D
echo "数组的元素为: ${my_array[*]}"
echo "数组的元素为: ${my_array[@]}"

执行脚本,输出结果如下所示:

$ chmod +x test.sh 
$ ./test.sh
数组的元素为: A B C D
数组的元素为: A B C D



读取数组 读取数组元素值的一般格式是: ${数组名[下标]} 例如: valuen
=${array_name[n]}
使用 @ 符号可以获取数组中的所有元素,例如: echo ${array_name[@]}

实例

#!/bin/bash
my_array=(A B "C" D)
echo "第一个元素为: ${my_array[0]}"
echo "第二个元素为: ${my_array[1]}"
echo "第三个元素为: ${my_array[2]}"
echo "第四个元素为: ${my_array[3]}"

执行脚本,输出结果如下所示:

$ chmod +x test.sh 
$ ./test.sh
第一个元素为: A
第二个元素为: B
第三个元素为: C
第四个元素为: D
 


获取数组的长度 获取数组长度的方法与获取字符串长度的方法相同,例如: # 取得数组元素的个数 length
=${#array_name[@]} # 或者 length=${#array_name[*]}
# 取得数组单个元素的长度 lengthn
=${#array_name[n]}


示例
#!/bin/bash
my_array[0]=A
my_array[1]=B
my_array[2]=C
my_array[3]=D

echo "数组元素个数为: ${#my_array[*]}"
echo "数组元素个数为: ${#my_array[@]}"

执行脚本,输出结果如下所示:

$ chmod +x test.sh 
$ ./test.sh
数组元素个数为: 4
数组元素个数为: 4

数组的值中加入变量
A=1
my_array=($A B C D)
echo "第一个元素为: ${my_array[0]}"
echo "第二个元素为: ${my_array[1]}"
echo "第三个元素为: ${my_array[2]}"
echo "第四个元素为: ${my_array[3]}"

输出:
第一个元素为: 1第二个元素为: B第三个元素为: c第四个元素为: D

数组索引可以为变量
arr=(a b c d)
i=2
echo ${arr[i]}

  输出为:

  c

原文地址:https://www.cnblogs.com/sea-stream/p/9876503.html