shell定义数组和字典

一维

#!/bin/bash

echo "shell定义字典"
#必须先声明
declare -A dic
dic=([key1]="value1" [key2]="value2" [key3]="value3")

#打印指定key的value
echo ${
    
    dic["key1"]}
#打印所有key值
echo ${!dic[*]}
#打印所有value
echo ${dic[*]}

#遍历key值
for key in $(echo ${
     
     !dic[*]})
do
        echo "$key : ${dic[$key]}"
done

echo "shell定义数组"

#数组
list=("value1" "value2" "value3")
#打印指定下标
echo ${list[1]}
#打印所有下标
echo ${!list[*]}
#打印数组下标
echo ${list[*]}
#数组增加一个元素
list=("${list[@]}" "value3")

二维

#! /bin/bash

declare -A dic1
dic1=(["k1"]="v1" ["k2"]="v2")
list=('v1' 'v2' 'dic1')
eval echo \${${list[2]}["k1"]}
#输出v1

案例

列表

  • 代码
#!/bin/bash
n=(1 2 3)
m=0
for i in ${
    
    n[*]} ;do echo "/opt/MegaRAID/storcli/storcli64 /c${m} add vd r0 size=all name=diskarray01 drives=${m}:${i}" awb ra cached strip=256;done
echo ${
    
    n[@]}
echo ${
    
    n[*]}
  • 输出
/opt/MegaRAID/storcli/storcli64 /c0 add vd r0 size=all name=diskarray01 drives=0:1 awb ra cached strip=256
/opt/MegaRAID/storcli/storcli64 /c0 add vd r0 size=all name=diskarray01 drives=0:2 awb ra cached strip=256
/opt/MegaRAID/storcli/storcli64 /c0 add vd r0 size=all name=diskarray01 drives=0:3 awb ra cached strip=256
1 2 3
1 2 3

字典

字典必选使用声明命才行declare -A,遍历字典的方式相对于列表而言多了个感叹号来进行key的遍历

  • 遍历key代码
declare -A k=(["a"]="1" ["b"]="2" ["c"]="3")
for j in ${
    
    !k[@]} ;do echo ${
    
    j};done
  • 输出
a
b
c
  • 遍历value代码
declare -A k=(["a"]="1" ["b"]="2" ["c"]="3")
for j in ${
    
    k[@]} ;do echo ${
    
    j};done
  • 输出
1
2
3

猜你喜欢

转载自blog.csdn.net/qq_26884501/article/details/111835620