Bash Shell只支持一维数组。
- 数组声明方式:
bash中数组可以不用声明,直接按照数组赋值方式给数组赋值,bash会将该变量按照数组处理
1) declare -a array_name
2) declare -p array_name # 等价于declare -a array_name='()'
- 数组赋值方式
bash数组下标由0开始。
1)array_name=(var1 var2 var3 ... varN)
2)array_name=([0]=var1 [1]=var2 [2]=var3 ...[M]=varN)
3) array_name[0]=var1
array_name[1]=var2
array_name[2]=var3
...
array_name[M]=varN
4)array_name+=(var1)
array_name+=(var2)
array_name+=(var3)
...
array_name+=(varN)
- 获取数组长度方式
1)${#array_name[@]}
2)${#array_name[*]}
bash中@和*都表示“拓展参数,从1开始”
- 获取参数特定项方式
#index为特定位置下标
${array_name[index]}
- 获取数组全部值
1)${array_name[@]}
2)${array_name[*]}
- 实现数组遍历方式
fileName=(`ls`)
for file in ${fileName[@]}; do
echo $file;
done
- 判断某个值是否位于数组中
if echo "${array_name[@]}" | grep -w "10" &>/dev/null; then
echo "Found";
fi
- 将字符串拆分为数组
1)以空格作为分隔符
str="aaa bbb ccc"
array_name=($str)
- 以特殊字符作为分隔符
#将IFS声明为需要使用的分隔符,可以为多个
IFS="[]"
str="[aaa] [bbb] [ccc]"
array_name=($str)
参考:
网友评论