数组操作
1.定义数组
Bash Shell 只支持一维数组(不支持多维数组),初始化时不需要定义数组大小,坐标由0开始。
Shell 数组用括号来表示,元素用"空格"符号分割开,语法格式如下:
array_name=(value1 ... valuen)
例如 "=" 两边不能有空格
arr=(1 2 3 4 5)
也可以这样:
arr[0]=value0
arr[1]=value1
arr[2]=value2
2.根据坐标读取元素 index
${arr[index]}
设置数组并打印读取值
my_array=(A B "C" D)
echo "第一个元素为: ${my_array[0]}"
echo "第二个元素为: ${my_array[1]}"
echo "第三个元素为: ${my_array[2]}"
echo "第四个元素为: ${my_array[3]}"
$ chmod +x xx.sh 设置执行权限
$ ./xx.sh 运行,下面是打印结果
第一个元素为: A
第二个元素为: B
第三个元素为: C
第四个元素为: D
3.获取数组中的所有元素
使用@ 或 * 可以获取数组中的所有元素,例如:
my_array[0]=A
my_array[1]=B
my_array[2]=C
my_array[3]=D
echo "数组的元素为: ${my_array[*]}" 运行结果是 4
echo "数组的元素为: ${my_array[@]}" 运行结果是 4
4.获取数组的长度
获取数组长度的方法与获取字符串长度的方法相同,例如:
my_array[0]=A
my_array[1]=B
my_array[2]=C
my_array[3]=D
#注意长度获取与现实所有元素类似,多个一个 “#” 符号
echo "数组元素个数为: ${#my_array[*]}"
echo "数组元素个数为: ${#my_array[@]}"
#数组元素个数为: 4
#数组元素个数为: 4
5.指定获取数组元素
#定义数组
ar=(1 2 3 4)
#获取指定坐标之后的所有元素
echo "获取坐标1之后的元素 "${ar[@]:1}
#获取坐标1之后的元素 2 3 4
#获取指定范围元素,左边是开区间右边是闭区间
echo "获取坐标0-2的元素 "${ar[@]:0:2}
#获取坐标0-2的元素 1 2
6.遍历数组
#定义数组
ar=(1 2 3 4)
#标准遍历--获取数组长度 "${ar[i]} “ 后面的 “;” 不可缺少
for((i=0;i<${#ar[*]};i++)) do echo ${ar[i]}; done;
#for in 方式,遍历指定范围的元素
#遍历数组--范围可自行调整
#for var in ${ar[*]:0:2} #遍历指定区间
for var in ${ar[*]} #遍历所有
do
echo $var
done