目录
1. 定义数组
2. 读取数组元素值
3. 关联数组
4. 在数组前加一个感叹号 ! 可以获取数组的所有键
5. 在数组前加一个井号 # 获取数组的长度
6. 数组初始化的时候,也可以用变量
7. 循环输出数组的方法
7.1 for循环输出
7.2 while循环输出
7.2.1 let i++ 自增
7.2.2 let i+=1 自增
7.2.3 let "i++" 或 let "i+=1" 自增也行
1. 定义数组
- 数组中可以存放多个值。Bash Shell 只支持一维数组
- 初始化时不需要定义数组大小。
- 数组元素的下标由 0 开始。
- shell 数组用括号 () 来表示,元素用空格符号分割开
语法格式如下:
arr=(v1 v2 v3 ... vn)
arr=(a b 1 2 AB)
for v in ${arr[*]}
doecho $v
done
2. 读取数组元素值
读取数组元素值的一般格式为:${数组名[下标]},比如:arr=(1 2),第一个元素为 ${arr[0]}
使用 ${数组名[*]} 或 ${数组名[@]} 可以获取到一个数组的所有元素列表
arr=(a b 1 2 AB)
echo ${arr[0]}
echo ${arr[4]}
echo "------------"
echo ${arr[*]}
echo "------------"
for v in ${arr[*]}
doecho $v
done
echo "------------"
echo ${arr[@]}
for v in ${arr[@]}
do echo $v
done
3. 关联数组
shell 支持关联数组,可以使用任意的字符串、或者整数作为下标来访问数组元素。
关联数组使用 declare 命令来声明,格式如下:
declare -A array_name
-A 选项是用于声明一个关联数组。
关联数组的键是唯一的。
示例:创建一个关联数组 website,并创建不同的键值:
declare -A website=(["baidu"]="www.baidu.com" ["huawei"]="www.huawei.com")
echo ${website["baidu"]}
echo ${website["huawei"]}
也可以先声明一个关联数组,然后再设置键和值:
declare -A website
website["baidu"]="www.baidu.com"
website["huawei"]="www.huawei.com"
echo ${website["baidu"]}
echo ${website["huawei"]}
4. 在数组前加一个感叹号 ! 可以获取数组的所有键
declare -A website
website["baidu"]="www.baidu.com"
website["huawei"]="www.huawei.com"
echo ${!website[*]}
5. 在数组前加一个井号 # 获取数组的长度
declare -A website
website["baidu"]="www.baidu.com"
website["huawei"]="www.huawei.com"
echo ${#website[*]}
6. 数组初始化的时候,也可以用变量
ivar=1
arr=($ivar 3 5)
for v in ${arr[*]}
doecho $v
done
7. 循环输出数组的方法
7.1 for循环输出
arr=(1 2 3)
for v in ${arr[*]}
doecho $v
done
7.2 while循环输出
7.2.1 let i++ 自增
arr=(1 2 3)
i=0
while [ $i -lt ${#arr[@]} ]
doecho ${arr[$i]}let i++
done
7.2.2 let i+=1 自增
arr=(1 2 3)
i=0
while [ $i -lt ${#arr[@]} ]
doecho ${arr[$i]}let i+=1
done
7.2.3 let "i++" 或 let "i+=1" 自增也行
arr=(1 2 3)
i=0
while [ $i -lt ${#arr[@]} ]
doecho ${arr[$i]}let "i+=1"
done
echo "----------"
j=0
while [ $j -lt ${#arr[*]} ]
doecho ${arr[$j]}let "j++"
done
注:本文是学习笔记,文字描述主要摘抄自
Shell 数组 | 菜鸟教程