【shell】shell 数组处理
Shell 数组 | https://www.runoob.com/linux/linux-shell-array.html
极简
array_name=(value1 value2 ... valuen)
array_name[0]=value0
读取数组元素值:${array_name[index]}
获取所有元素:echo "数组的元素为: ${my_array[*]}"
获取元素个数:echo "元素个数为: ${#my_array[*]}"
key-value
declare -A array_name
array_name["google"]="www.google.com"
array_name["index"]
获取数组的所有键:echo "键为: ${!site[*]}"
简述
Bash Shell 只支持一维数组(不支持多维数组)
Shell 数组用括号来表示,元素用"空格"符号分割开,语法格式如下:
array_name=(value1 value2 ... valuen)也可以使用数字下标来定义数组:
array_name[0]=value0
array_name[1]=value1
array_name[2]=value2读取数组元素值的一般格式是:
${array_name[index]}关联数组
declare -A array_name
-A 选项就是用于声明一个关联数组。关联数组的键是唯一的。
以下实例我们创建一个关联数组 site,并创建不同的键值:
实例
declare -A site=(["google"]="www.google.com" ["runoob"]="www.runoob.com" ["taobao"]="www.taobao.com")
我们也可以先声明一个关联数组,然后再设置键和值:实例
declare -A site
site["google"]="www.google.com"
site["runoob"]="www.runoob.com"
site["taobao"]="www.taobao.com"访问关联数组元素可以使用指定的键,格式如下:
array_name["index"]
获取数组中的所有元素
使用 @ 或 * 可以获取数组中的所有元素
echo "数组的元素为: ${my_array[*]}"
echo "数组的元素为: ${my_array[@]}"获取数组长度的方法与获取字符串长度的方法相同
echo "数组的元素个数为: ${#my_array[*]}"
echo "数组的元素个数为: ${#my_array[@]}"获取数组的所有键
echo "数组的键为: ${!site[*]}"
echo "数组的键为: ${!site[@]}"
遍历
cnt=${#my_array[@]}
for ((i=0;i < ${cnt};i++))
do
echo ${array_name[i]}
done
空数组
vim ./test.sh
#!/bin/bash
#
arry2=(That sa non empty array)
array3=()
array4=('')
#
ARRAY()
{
echo "Element of arry2 is:${array2[@]}."
echo "Element of array3 is:${array3[@]}."
echo "Element of array4 is:${array4[@]}."
}ARRAY
array3[0]="my"
array3[2]="u"ARRAY
array4[5]=9
echo "len of array3 is:${#array3[@]}."
echo "Element of array4 is:${array4[@]}."
echo "len of array4 is:${#array4[@]}."
[root@localhost vmshare]# ./test.sh
Element of arry2 is:.
Element of array3 is:.
Element of array4 is:.
Element of arry2 is:.
Element of array3 is:my u.
Element of array4 is:.
len of array3 is:2.
Element of array4 is: 9.
len of array4 is:2.