给数组赋值的几种方式
- array_nmae=(v0 v1 v2…);
例:
arr=(1 2 3);
或者
arr=(
1
2
3
);
注意:等号两边不能有空格
2.array_name[i]=v;
例:
arr[0]=1;
arr[1]=2;
arr[2]=3;
读取数组
1.获取其中某个元素
${array_name[index]}
例:
arr=(1 2 3);
echo ${arr[2]}
输出:
3
注:shell数组下标是从0开始
2.遍历数组
例:
arr=(1 2 3);
for i in ${arr[@]}
do
echo $i
done
输出:
1
2
3
注:${array_name[*]}或${array_name[@]}
可获得数组中的所有元素
获取数组长度
${#array_name[@]}或者${#array_name[*]}
例:
arr=(1 2 3);
echo ${#arr[@]}
输出:
3
取数组中的一段
1.取下标大于等于n的元素
${arr[@]:n}
例
arr=(1 2 3 4 5 6);
echo ${arr[@]:3};
输出:
4 5 6
2.取下标小于n的元素
${arr[@]::n}
例:
arr=(1 2 3 4 5 6);
echo ${arr[@]::3}
输出:
1 2 3
3.从下标i开始取j个元素
${arr[@]:i:j}
例:
arr=(6 7 8 9 10);
echo ${arr[@]:2:3}
输出:
8 9 10
拼接两个数组
new_array=(“ array1[@]"" {array2[@]}”)
例:
arr1=(6 "a b" 8);
arr2=(1 2 3);
new_arr=("${arr1[@]}" "${arr2[@]}")
echo ${#new_arr[@]}
echo ${new_arr[@]}
输出:
6
6 a b 8 1 2 3
注意:一定要用引号把待拼接的数组包起来。否则如果数组中的单个元素内有空格就会出现问题。比如上例,如果不使用引号,改为
new_arr=(${arr1[@]} ${arr2[@]})
则输出
7
6 a b 8 1 2 3
元素个数变成了7个