Shell 原生支持数组,虽然支持的不好。
创建数组、写入数组元素
使用 (e1 e2 ..)
语法创建数组:
arr=(a b c)
从字符串创建数组:
str="a b c"
arr=($str)
使用下标语法创建数组或写入数组元素:
arr[0]=a
arr[1]=b
arr[2]=c
如果数组下标使用的不连续,则对跳过的下标赋空值:
arr[0]=a
arr[2]=c
echo ${arr[1]} # <empty>
读取数组、获取数组长度
arr=(a b c)
# 获取单个元素
echo ${arr[0]} # a
# 获取全部元素
echo ${arr[@]} # a b c
# 获取数组长度
len=${#arr[@]} # 3
通过 for in
语法使用数组:
arr=(a b c)
for item in ${arr[@]}; do
echo "$item" # a, b, c
done
清除数组、清除数组元素
arr=(a b c)
# 清除数组元素
unset arr[1]
echo ${#arr[@]} # 2
echo ${arr[@]} # a c
echo ${arr[1]} # <empty>
# 清除数组
unset arr
echo ${#arr[@]} # 0
echo ${arr[@]} # <empty>
分片、替换
分片:
arr=(a b c)
clip=${arr[@]:1:2}
echo ${#clip[@]} # 1 注意:只切片得到的不是数组
subarr=(${arr[@]:1:2})
echo ${#subarr[@]} # 2
替换:
arr=(a b c)
arr=(${arr[@]/b/c}) # a c c
echo ${arr[@]/c/d} # a d d
网友评论