在Shell中,可以使用数组来存储一组数据。Shell中的数组属于一维数组,索引从0开始(与大多数编程语言一样),可以使用以下语法来定义数组:
1.一维数组
array_name[index]=value
其中,array_name是数组名称,值为value的元素在数组中的索引为index(index必须为非负整数)。可以在定义数组时赋值,也可以在之后赋值。
示例
#!/bash/bin
# 定义一个数组,包含 4 个元素
array=(apple banana orange pear)
# 可以像这样访问数组元素
echo "first element value is: ${array[0]}" # apple
echo -e "secnod element value is: ${array[1]} \n" # banana
echo ${array[@]}
echo -e "\n"
# 获取数组长度
length=${#array[@]}
echo -e "数组长度为 $length \n"
# 打印所有元素
for element in ${array[@]}
do
echo $element
done
输出
first element value is: apple
secnod element value is: banana
apple banana orange pear
数组长度为 4
apple
banana
orange
pear
上述示例中,我们定义了一个包含4个元素的数组,并访问了前两个元素。使用${#array[@]}获取数组长度,然后通过for循环打印每一个元素。
Shell数组的索引可以是任何非负整数,不限于连续的整数数值。在Shell脚本中,数组可以作为一种非常方便的数据结构,在实现各种算法和数据处理时使用广泛。
2.二维数组
Shell脚本默认不支持二维数组,但是可以使用嵌套数组的方式实现二维数组的功能。
示例
#!/bash/bin
# 定义一个二维数组
declare -A matrix
# 初始化二维数组
matrix[0,0]=1
matrix[0,1]=2
matrix[0,2]=3
matrix[1,0]=4
matrix[1,1]=5
matrix[1,2]=6
# 访问二维数组元素
echo ${matrix[0,0]} # 输出 1
echo ${matrix[0,1]} # 输出 2
echo ${matrix[1,2]} # 输出 6
输出
1
2
6