一、定义:
- 数组中可以存放多个值。Bash Shell 只支持一维数组(不支持多维数组),初始化时不需要定义数组大小
- 数组元素的下标由0开始
- Shell 数组用括号来表示,元素用”空格”符号分割开
1、直接定义整个数组
语法格式:array_name=(value1 value2 … valuen)
例如:
my_array=(A B “C” D)
2、使用下标来定义数组:
array_name[0]=value0
array_name[1]=value1
array_name[2]=value2
二、读取
- 1、读取单个值的格式为:${array_name[index]}
my_array=(A B "C" D)
echo "第一个元素为: ${my_array[0]}"
echo "第二个元素为: ${my_array[1]}"
执行结果为
第一个元素为: A
第二个元素为: B
- 2、使用@ 或 * 获取数组中所有元素:${array_name[*]} 或者${array_name[@]}
my_array=(A B "C" D)
echo "数组的元素为: ${my_array[*]}"
echo "数组的元素为: ${my_array[@]}"
#执行脚本,输出结果如下所示:
#数组的元素为: A B C D
#数组的元素为: A B C D
- 3、获取数组长度: ${#array_name[*]} 或者 ${#array_name[@]}
my_array=(A B "C" D)
echo "数组元素个数为: ${#my_array[*]}"
echo "数组元素个数为: ${#my_array[@]}"
#执行脚本输出结果如下
#数组元素个数为: 4
#数组元素个数为: 4
三、遍历
- 1、标准for循环遍历
array=( A B C D 1 2 3 4)
for(( i=0;i<${#array[@]};i++)) ; do
#${#array[@]}获取数组长度用于循环
echo ${array[i]};
done;
- 2、for ... in遍历,不使用数组下标
array=(A B C D 1 2 3 4)
for element in ${array[@]}
#也可以写成for element in ${array[*]}
do
echo $element
done
- 3、for ... in遍历,使用数组下标
array=( A B C D 1 2 3 4)
for i in "${!arr[@]}";
do
printf "%s\t%s\n" "$i" "${arr[$i]}"
done
- 4、while循环遍历
array=( A B C D 1 2 3 4)
i=0
while [ $i -lt ${#array[@]} ]
#当变量(下标)小于数组长度时进入循环体
do
echo ${ array[$i] }
#按下标打印数组元素
let i++
done