Shell中的数组操作

数组的定义

方式1 小括号赋值创建数组

#使用小括号赋值创建数组
fruits=(apple banana cherry)
#定义多个数组
array1=(1 2 3); array2=(a b c); array3=("foo" "bar" "baz")

方式2 键值对方式

#定义关联数组
declare -A fruit_colors
#设置键值对
fruit_colors["apple"]="red"
fruit_colors["banana"]="yellow"
fruit_colors["cherry"]="red"
#访问关联数组中的值
echo "The color of apple is ${fruit_colors["apple"]}"
echo "The color of cherry is ${fruit_colors["cherry"]}"

方式3 命令的输出结果作为数组

# 将命令的输出结果作为数组的内容
array=(`ls -l`)

方式4 read 命令读取数组元素

# 使用 read 命令从输入中读取数组元素
read -a array_name

数组的引用

${array[index]}  #引用数组中索引为index的值
${array[@]}  #引用所有数组元素
${array[*]}  #引用所有数组元素
${#array[@]}  #数组的长度
${#array[*]}  #数组的长度
${#array} #数组中下标为0的字符的长度

数组的删除

#原始数组
array=("apple" "banana" "cherry" "date")

#删除索引为1的元素
unset array[1]

#打印更新后的数组
echo "更新后的数组:${array[@]}"

#删除所有元素
unset array

#打印更新后的数组,不会输出任何东西
echo "更新后的数组:${array[@]}"

数组的截取

#原始数组
array=("apple" "banana" "cherry" "date" "fig")

#从索引0开始,截取前3个元素
slice1=("${array[@]:0:3}")

#从索引2开始,截取到最后一个元素
slice2=("${array[@]:2}")

#从倒数第3个元素开始,截取到最后一个元素
slice3=("${array[@]: -3}")

打印切片后的数组

echo "切片1:${slice1[@]}"  #输出:切片1:apple banana cherry
echo "切片2:${slice2[@]}"  #输出:切片2:cherry date fig
echo "切片3:${slice3[@]}"  #输出:切片3:cherry date fig

数组的替换

#定义数组
my_array=(111 112 113) 
#// 进行全局替换,即替换数组中所有元素里的所有匹配值1,不会改变数组原本值
my_array=("${my_array[@]//1/2}")
echo ${my_array[@]//1/5}  #输出:555 552 553

#替换每个元素中的第一个 匹配值,使用单个斜杠 /,不会改变数组原本值
my_array=("${my_array[@]/1/2}")
echo ${my_array[@]//1/5}  #输出:511 512 513

数组的遍历

使用 for 循环遍历数组

#原始数组
fruits=("apple" "banana" "cherry")

#使用 for 循环遍历数组
for fruit in "${fruits[@]}"; do
    echo "$fruit"
done

使用 while 循环遍历数组

#原始数组
fruits=("apple" "banana" "cherry")

#使用索引和while循环遍历数组
index=0
while [ $index -lt ${#fruits[@]} ]; do
    echo "${fruits[index]}"
    ((index++))
Done
  • 5
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值