在 Shell 脚本里使用数组

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

转载于:https://my.oschina.net/tridays/blog/819870

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值