在 Shell 脚本里使用数组

2017-01-06  本文已影响17人  字母数字或汉字

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
上一篇 下一篇

猜你喜欢

热点阅读