shell数组详解

文章目录

参考书籍:《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]}

shell数组详解

2、获取所有元素的值

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

shell数组详解

3、统计数组的长度

echo ${#array1[*]}

shell数组详解

4、打印数组的下标值

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

shell数组详解

5、删除数组元素和数组

unset array2[2]     unset user_info[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

四、$*和$@的区别

&#x200B;4.1.&#x5F53;&#x76F4;&#x63A5;&#x901A;&#x8FC7;echo&#x83B7;&#x53D6;&#x6570;&#x7EC4;&#x6240;&#x6709;&#x5143;&#x7D20;&#x65F6;&#xFF0C;&#x5B83;&#x4EEC;&#x662F;&#x4E00;&#x6837;&#x7684;&#x6548;&#x679C;&#x200B;

shell数组详解

&#x200B;4.2.&#x800C;&#x5728;&#x5FAA;&#x73AF;&#x4E2D;&#x5B83;&#x4EEC;&#x5C31;&#x6709;&#x533A;&#x522B;&#x4E86;&#x200B;

shell数组详解

shell数组详解

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

五、技巧

&#x200B;&#x5B57;&#x7B26;&#x4E32;&#x4EE5;&#x5192;&#x53F7;&#x5206;&#x9694;&#x5B58;&#x5165;&#x6570;&#x7EC4;&#x200B;

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

Original: https://blog.51cto.com/u_4820306/5425062
Author: 运维灬小兵
Title: shell数组详解

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/517048/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球