Shell | 数组

    和其他编程语言一样,shell也有数组这一个概念。Shell的数组存的是数据元素。和Python的列表类似,不管是数字还是字符串,都可以存到一块。

    数组的下标也是和其他编程语言一样,从0开始。用[]来表示下标。可惜的是Bash Shell只支持一维数组。

 

Shell数组的定义:

    用()来表示数组,数组元素之间用空格来分隔。例如:

[root@localhost shell_protest]# cat array.sh #!/bin/basharray_name=(nick mike amy topate 123)printf "%s\n" $array_name[root@localhost shell_protest]# sh array.sh nick

!!我们发现,不打下标,输出的是一个数组的第一个元素。

 

获取数组元素

     那怎么去查看第二个元素呢?

  那就涉及到前面输入输出的{},{}可以让解释器识别你想要识别的边界,要不然会输出异常。如下:

[root@localhost shell_protest]# sh array.sh mikenick[1]--------------------Source-----------------------------------[root@localhost shell_protest]# cat array.sh#!/bin/basharray_name=(nick mike amy topate 123)printf "%s\n" ${array_name[1]}echo $array_name[1]

当然!shell也可以像python一样,获取数组的全部元素。

利用[*]或者[@]作为下标即可:

[root@localhost shell_protest]# sh array.sh mikenick[1]nick mike amy topatenick mike amy topate---------------------Source--------------------------[root@localhost shell_protest]# cat array.sh #!/bin/basharray_name=(nick mike amy topate)printf "%s\n" ${array_name[1]}echo $array_name[1]echo ${array_name[*]}echo ${array_name[@]}

 

那么,我们总不能单次定义,不改变数组内容。我们应该怎么改变数组呢?

 

修改数组:

 

        重建数组:

            利用array=(),可以指定位置,也可以不指定位置,不指定位置的话,默认从0开始存

[root@localhost shell_protest]# sh array.sh 
nick mike amy topate
12 13
2 13
------------------Source----------------------------------
[root@localhost shell_protest]# cat array.sh 
#!/bin/bash
​
array_name=(nick mike amy topate)
echo ${array_name[@]}
​
array_name=(12 13)
​
echo ${array_name[*]}
​
array_name=([12]=13 [1]=2)
​
echo ${array_name[*]}

 

增加元素:

        增加元素有这几种方法:

            1、利用重建的方法array=()

            2、利用+=方法       

            3、通过下标添加

[root@localhost shell_protest]# sh array.sh 
nick mike amy topate
12 13
2 13
2 13 0 2
2 13 0 2 11 222
2 13 0 2 11 222 1
[root@localhost shell_protest]# cat array.sh
#!/bin/bash
​
#初始
array_name=(nick mike amy topate)
​
echo ${array_name[@]}
​
#=================重建数组
array_name=(12 13)
​
echo ${array_name[*]}
#=============重建数组
array_name=([12]=13 [1]=2)
​
echo ${array_name[*]}
#======通过array=(${array_name[*]} element1 ..)
#添加
array_name=(${array_name[*]} 0 2)
​
echo ${array_name[*]}
​
#通过+=方式
​
array_name+=(11 222)
echo ${array_name[*]}
#通过下标增加
array_name[12]=1
​
echo ${array_name[*]}



 

删除元素:

全部删除通过重建的方法:

#往上面代码加上
array_name=() 或者是 unset array_name
echo ${array_name[*]}
​
[root@localhost shell_protest]# sh array.sh 
nick mike amy topate
12 13
2 13
2 13 0 2
​

 

要删除某个元素:就加上下标:

unset array_name[index]

更多关于数组的操作:

    获取数组长度:

    思路是利用@或者*:

${#array_name[@]}${#array_name[*]}#但是这样就变成获取数组第三个元素的长度${#array_name[2]}

    数组的拼接:

还是利用上面的函数:

[root@localhost shell_protest]# sh array1.sh 
nick mike amy topate
nick mike amy topate nick mike amy topate
[root@localhost shell_protest]# cat array1.sh
#!/bin/bash
​
array_name=(nick mike amy topate)
​
echo ${array_name[@]}
​
array_name=(${array_name[@]} ${array_name[*]})
echo ${arra
y_name[*]}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值