shell脚本数组

目录

一、数组定义方法

 二、引用数组的值

1.获取数组的数据列表(即所有元素值)

 2.查看数组内某一元素的值

3.获取数组的长度

 三、数组分片(数组截取)

四、数组替换 

4.1 临时替换

4.2 永久替换

五、删除数组

六、增加数组内的元素 


一、数组定义方法

数组用括号来表示,元素用"空格"符号分隔开

法一:
数组名=(value1  value2 value3 value4 ...)

法二:
先定义列表,再引用列表的值定义数组。
列表名="value1  value2 value3 value4 value5"
 数组名=($列表名)

法三:
用过下标值定义每个元素。
数组名=([0]=value1  [1]=value2  [2]=value3)

法四:
通过下标值,一个一个定义数组内的每个元素。
同时也可以通过这种方式修改元素的值。
数组名[0]=value1
 ​
 数组名[1]=value2
 ​
 数组名[2]=value3
 ​
 数组名[3]=value4

 二、引用数组的值

1.获取数组的数据列表(即所有元素值)

echo ${array[@]}
 或
echo ${array[*]}

 2.查看数组内某一元素的值

${数组名[n]}       //n代表元素的下标
 ​
 echo ${array[0]}   //获取数组内第一个元素的值(下标为0的元素值)
 echo ${array[1]}   //获取数组内第二个元素的值(下标为1的元素值)

3.获取数组的长度

echo ${#数组名[*]}
echo ${#数组名[@]}

 三、数组分片(数组截取)

arr=(10 20 30 40 50)
echo ${arr[*]}           
echo ${arr[@]}       #输出整个数组,此处*与@相同
echo ${arr[@]:0:2}   #获取 ${数组名[@或*]:起始位置:长度} 的值
echo ${arr[#]:3:2}

四、数组替换 

4.1 临时替换

echo ${数组名[@]/旧字符/新字符}    

//会替换所有元素中能匹配到的字符,但这是临时替换,不会改变原有数组的值

4.2 永久替换

数组名=(${数组名[@]/旧字符/新字符})

五、删除数组

unset 数组名[n]        //删除数组内的某一个元素,n为下标值

 

六、增加数组内的元素 

#方法1
 数组名[n]=元素值       //使用下标值直接增加元素
 ​
 #方法2
 数组名+=(元素1 元素2 .....)
 ​
 #方法3
 数组名[数组长度]=元素值     //此种方法必须保证数组元素是完整的,如果某个下标被跳过了,此种方法会替换掉原来的某个元素
 ​
 #方法4
 数组名=("${数组名[@]}" 元素1 元素2 .....)
//引用数组值必须加双引号,不然原数组内有空格的单个元素(例如"zhang san")会被当成2个元素。
//且必须使用@,因为加上双引号之后"$@"表示将所有参数当作个体,而$*表示将所有参数当作一个整体。

七、将数组的值传给函数

第一步:向函数传入数组的时候需要先把数组转换成列表作为函数的参数使用:
 函数名 ${数组名1[@]}
 ​
 第二步:在函数内把传入的列表重新组合成数组:
 数组名2=($@)
 ​
 第三步:在函数外重新组合成数组:
 数组名3=(`函数名 ${数组名1[@]}`)
#!/bin/bash

fun01 () {
#不能写$1,否则只会输出数组的第一个元素
   echo "函数接收到的参数为:$@"
#在函数内把传入的列表重新组合成数组
   newarr=($@)
   echo "新数组的值为:${newarr[@]}"
}
  
#### main ####
arr=(1 2 3 4 5)
echo "原数组的值为:${arr[@]}"
#把数组转换成列表作为函数的参数使用
fun01 ${arr[@]}

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值