shell数组详解

网友投稿 281 2022-11-17

shell数组详解

文章目录

​​一、概述​​​​二、定义数组​​

​​`2.1.索引数组`​​

​​方法一​​​​方法二​​

​​`2.2.关联数组`​​​​`多维数组`​​

​​三、处理数组​​

​​`3.1.直接获取元素的值及数组的信息`​​

​​1、获取单个元素的值​​​​2、获取所有元素的值​​​​3、统计数组的长度​​​​4、打印数组的下标值​​​​5、删除数组元素和数组​​

​​`3.2.使用循环的方式遍历数组`​​

​​方法一:直接取值​​​​方法二:通过下标取值​​​​方法三:C语言风格​​

​​四、$*和\$@的区别​​

​​`4.1.当直接通过echo获取数组所有元素时,它们是一样的效果`​​​​`4.2.而在循环中它们就有区别了`​​​​总结:\${array1[*]}会将数组元素视为一个整体,而\${array1[@]}将所有数组元素视为独立的个体,推荐使用${array1[@]}​​

​​五、技巧​​

​​`字符串以冒号分隔存入数组`​​

参考书籍:《Linux Shell核心编程指南》

一、概述

数组是Shell的一种特殊变量,是一组数据的集合,里面的每个数据被称为一个数组元素。

当前Bash仅支持一维索引数组和关联数组,Bash对数组的大小没有限制。

二、定义数组

​​2.1.索引数组​​

方法一

array=() #定义一个空数组array1[0]=aarray1[1]=barray1[2]=c

这会得到一个包含三个元素的数组array1

方法二

array2=(a b c)

元素之间以空格隔开

​​2.2.关联数组​​

关联数组可以使用非数字作为下标,可以是任意字符串

定义一个名为user_info的数组

declare -A user_infouser_info[name]=devopsuser_info[age]=18或者user_info=([name]=devops [age]=18)

注意:在函数外部定义的关联数组为全局变量,在函数内部定义的关联数组为局部变量

​​多维数组​​

数组名[索引1][索引2]=值或者数组名[索引1,索引2]=值

三、处理数组

​​3.1.直接获取元素的值及数组的信息​​

1、获取单个元素的值

echo ${array1[0]} #获取第一个元素的值echo ${array1[-1]} #获取最后一个元素的值

2、获取所有元素的值

echo ${array1[*]} 或者用echo ${array1[@]}

3、统计数组的长度

echo ${#array1[*]}

4、打印数组的下标值

echo ${!array1[@]}echo ${!user_info[@]}

5、删除数组元素和数组

unset array2[2] #删除索引数组的第三个元素unset user_info[age] #删除关联数组中索引为age的元素unset array2 #删除数组

​​3.2.使用循环的方式遍历数组​​

方法一:直接取值

for i in "${array1[@]}"do echo $idone

方法二:通过下标取值

for i in ${!array1[@]}do echo ${array1[i]}done

方法三:C语言风格

for((i=0;i<${#array1[@]};i++))do echo ${array1[i]}done

四、$*和$@的区别

​​4.1.当直接通过echo获取数组所有元素时,它们是一样的效果​​

​​4.2.而在循环中它们就有区别了​​

总结:${array1[*]}会将数组元素视为一个整体,而${array1[@]}将所有数组元素视为独立的个体,推荐使用${array1[@]}

五、技巧

​​字符串以冒号分隔存入数组​​

string="12:34:56"array=(${string/:/ })

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:数据资产为王,如何解析企业数字化转型与数据资产管理的关系?
下一篇:嵌入式Linux网络摄像机设计实现
相关文章

 发表评论

暂时没有评论,来抢沙发吧~