在Unix/Linux shell编程中,数组是一种非常有用的数据结构,可以存储多个值并以索引的方式访问这些值。
1. Shell数组定义
在Shell中,数组可以通过以下几种方式定义:
1.1 使用括号定义数组
sh
复制代码
array_name=(value1 value2 value3 ...)
例如:
sh
复制代码
fruits=("apple" "banana" "cherry")
1.2 使用赋值语句逐个定义
sh
复制代码
array_name[index]=value
例如:
sh
复制代码
fruits[0]="apple"
fruits[1]="banana"
fruits[2]="cherry"
1.3 使用复合赋值
sh
复制代码
array_name=([index1]=value1 [index2]=value2 ...)
例如:
sh
复制代码
fruits=([0]="apple" [1]="banana" [2]="cherry")
2. 获取数组元素
在Shell中,可以通过索引访问数组中的元素。数组索引从0开始。
2.1 获取单个元素
sh
复制代码
echo ${array_name[index]}
例如:
sh
复制代码
echo ${fruits[0]} 输出: apple
2.2 获取所有元素
sh
复制代码
echo ${array_name[@]}
例如:
sh
复制代码
echo ${fruits[@]} 输出: apple banana cherry
2.3 获取数组长度
sh
复制代码
echo ${array_name[@]}
例如:
sh
复制代码
echo ${fruits[@]} 输出: 3
2.4 获取数组索引
sh
复制代码
echo ${!array_name[@]}
例如:
sh
复制代码
echo ${!fruits[@]} 输出: 0 1 2
3. 示例
以下是一个完整的示例,展示了如何定义数组、获取数组元素以及遍历数组:
sh
复制代码
!/bin/bash
定义数组
fruits=("apple" "banana" "cherry" "date")
获取单个元素
echo "First fruit: ${fruits[0]}"
获取所有元素
echo "All fruits: ${fruits[@]}"
获取数组长度
echo "Number of fruits: ${fruits[@]}"
获取数组索引
echo "Indices of fruits: ${!fruits[@]}"
遍历数组
for fruit in "${fruits[@]}"; do
echo "Fruit: $fruit"
done
运行上述脚本,输出将会是:
复制代码
First fruit: apple
All fruits: apple banana cherry date
Number of fruits: 4
Indices of fruits: 0 1 2 3
Fruit: apple
Fruit: banana
Fruit: cherry
Fruit: date
4. 注意事项
Shell数组的索引从0开始。
使用 `${array_name[@]}` 获取所有元素时,双引号是必要的,以确保在遍历时每个元素都被正确处理。
数组可以包含任何类型的数据,包括字符串和数字。