shell入门学习笔记-08-数组

系列目录与参考文献传送门: shell入门学习笔记-序章

数组详解

  • shell只支持一维数组
  • shell数组下标从0开始

数组定义

admindeMacBook-Pro:myshell admin$ a=(0 "one")
admindeMacBook-Pro:myshell admin$ a[2]=2
admindeMacBook-Pro:myshell admin$ b=([0]=0 [3]=2)
  • sh数组是弱类型,不要求所有元素的类型一致
  • sh数组长度不固定,可以随时增加元素
  • sh数组无需给每个元素赋值,可以若干元素赋值。如b=([0]=0 [3]=2)数组的长度是3.

获取数组元素

# 数组定义
admindeMacBook-Pro:myshell admin$ a=(0 "one")
admindeMacBook-Pro:myshell admin$ a[2]=2
admindeMacBook-Pro:myshell admin$ b=([0]=0 [3]=2)
# 直接echo
admindeMacBook-Pro:myshell admin$ echo "${a[1]}"
one
admindeMacBook-Pro:myshell admin$ echo "${a[2]}"
2
admindeMacBook-Pro:myshell admin$ echo "${b[1]}"

# 赋值
admindeMacBook-Pro:myshell admin$ c=${a[1]}
admindeMacBook-Pro:myshell admin$ echo $c
one

# 获取全部
admindeMacBook-Pro:myshell admin$ echo ${a[*]}
0 one 2
admindeMacBook-Pro:myshell admin$ echo ${b[@]}
0 2
# *与@的区别
admindeMacBook-Pro:myshell admin$ for var in "${a[*]}"
> do
>    echo "$var"
> done
0 one 2
admindeMacBook-Pro:myshell admin$ for var in "${a[@]}"
> do
>    echo "$var"
> done
0
one
2
  • 获取数组元素: ${array[index]}
  • 获取全部元素:${a[*]},结果返回的是一份数据。
  • 获取全部元素:${a[@]},结果返回的是多份数据。

获取数组长度

admindeMacBook-Pro:myshell admin$ c[0]="hell world"
admindeMacBook-Pro:myshell admin$ echo ${c[*]}
hell world
admindeMacBook-Pro:myshell admin$ c[1]="goodbye"
admindeMacBook-Pro:myshell admin$ echo $[c[*]]
-bash: c[*]: bad array subscript
0
admindeMacBook-Pro:myshell admin$ echo $c
hell world
admindeMacBook-Pro:myshell admin$ echo $c[*]
hell world[*]
admindeMacBook-Pro:myshell admin$ echo ${c[*]}
hell world goodbye
admindeMacBook-Pro:myshell admin$ echo ${#c[0]}
10
admindeMacBook-Pro:myshell admin$ echo ${#c}
10
admindeMacBook-Pro:myshell admin$ echo ${#c[*]}
2
  • 可以直接定义一个数组元素,从而生成数组。
  • 使用数组时,尤其注意大括号,否则会出问题。
  • 数组不加下表,则获取的是首个元素。
  • 获取数组元素的字符串长度:${#array[length]}
  • 获取数组的元素格式:${#array[*]}或者${#array[@]}

数组拼接

admindeMacBook-Pro:myshell admin$ abc=(${a[*]} ${b[@]} ${c[*]} ${c[1]})
admindeMacBook-Pro:myshell admin$ for var in "${abc[@]}"
> do
>  echo "$var"
> done
0
one
2
0
2
hell
world
goodbye
goodbye
  • 数组拼接的思路:通过${array[@]}或者${array[*]}将数组转成列表,然后进行拼接。
  • 注意:拼接会导致包含空格的元素分裂。例如hello world

删除数组元素与删除数组

admindeMacBook-Pro:myshell admin$ echo ${abc[*]}
0 one 2 0 2 hell world goodbye goodbye
admindeMacBook-Pro:myshell admin$ unset abc[1]
admindeMacBook-Pro:myshell admin$ echo ${abc[@]}
0 2 0 2 hell world goodbye goodbye
admindeMacBook-Pro:myshell admin$ unset abc
admindeMacBook-Pro:myshell admin$ echo ${abc[*]}

admindeMacBook-Pro:myshell admin$
  • 删除数组元素:unset array[index],注意不是:unset ${array[index]}
  • 删除数组:unset arrays
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值