shell中的“数组”

定义数组

数组名=(值1 值2 ... 值n)

[root@MiWiFi-R3-srv ~]# array_name=(value1 value2 value3 value4)

读取数组

${数组名[下标]}

[root@MiWiFi-R3-srv ~]# echo "${array_name}"
value1
[root@MiWiFi-R3-srv ~]# echo "${array_name[0]}"
value1
[root@MiWiFi-R3-srv ~]# echo "${array_name[1]}"
value2
[root@MiWiFi-R3-srv ~]# echo "${array_name[2]}"
value3
[root@MiWiFi-R3-srv ~]# echo "${array_name[3]}"
value4

获取数组中元素个数

[root@MiWiFi-R3-srv ~]# echo "${#array_name[@]}"
4
[root@MiWiFi-R3-srv ~]# echo "${#array_name[*]}"
4

获取单个元素的的长度(主要是字符串的字符长度)

[root@MiWiFi-R3-srv ~]# echo "${#array_name[0]}"
6

 获取数组中所有元素

[root@localhost bash_learn]# echo ${array_name[@]}
value1 value2 value3 value4

移除某个元素(依然根据索引位置)

[root@localhost bash_learn]# unset array_name[2]
[root@localhost bash_learn]# echo ${array_name[@]}
value1 value2 value4

获取所有索引id

[root@localhost bash_learn]# echo ${!array_name[@]}
0 1 2 3

获取指定索引id的元素

[root@localhost bash_learn]# array_name[33]="New_Items"
[root@localhost bash_learn]# echo ${array_name[@]}
value1 value2 value4 New_Items
[root@localhost bash_learn]# echo ${!array_name[@]}
0 1 3 33

 关联数组

转载地址:https://www.jb51.net/article/103915.htm

普通数组:只能使用证书作为数组索引
关联数字:可以使用字符串作为数组索引

声明一个变量为关联数组
[root@a ~]# declare -A Array

将元素添加到关联数组中
[root@a ~]# Array=([lucy]=beijing [jack]=shanghai)
或
Array[mike]=tianjin

通过索引访问元素
[root@a ~]# Array[mike]=tianjin
[root@a ~]# echo ${Array[mike]}
tianjin
[root@a ~]# echo ${Array[jack]}
shanghai
[root@a ~]# echo ${Array[lucy]}
beijing

获取数组所有的索引列表
[root@a ~]# echo ${Array[*]}
tianjin shanghai beijing

获取数组所有的元素列表
[root@a ~]# echo ${!Array[*]}
mike jack lucy

遍历键值对(也就是index和value)
[root@a ~]# cat testarray.sh 
#!/bin/bash
declare -A Array
Array=([lucy]=beijing [jack]=shanghai [mike]=tianjin)
for key in ${!Array[*]}
do
    echo "${key} come from ${Array[$key]}"
done
[root@a ~]# sh testarray.sh 
mike come from tianjin
jack come from shanghai
lucy come from beijing
原文地址:https://www.cnblogs.com/thebear/p/7754876.html