运维

Shell脚本中使用for循环遍历数组的七种方法

在 Shell 脚本中,for 循环可以使用多种方式遍历数组。本文例举一些常见的实现方法:

1. 直接遍历数组元素

for item in "${my_array[@]}"; do
    echo "$item"
done

说明:${my_array[@]} 展开数组的所有元素,一个个传给 for 循环。

2. 通过数组索引遍历

for i in "${!my_array[@]}"; do
    echo "Index $i: ${my_array[i]}"
done

说明:${!my_array[@]} 获取数组的所有索引,用于按位置访问元素。

3. 使用传统 C 风格的 for 循环

for ((i = 0; i < ${#my_array[@]}; i++)); do
    echo "Index $i: ${my_array[i]}"
done

说明:
${#my_array[@]} 获取数组的长度。
((...)) 进行 C 风格的循环迭代。

4. 逆序遍历数组

for ((i = ${#my_array[@]} - 1; i >= 0; i--)); do
    echo "Index $i: ${my_array[i]}"
done

说明:通过索引从数组尾部向前遍历。

5. 遍历带条件检查

my_array=(a b c di Bi ei Bc)

for item in "${my_array[@]}"; do
    if [[ $item == B* ]]; then
        echo "匹配的元素: $item"
    fi
done

说明:结合 if 条件语句,筛选符合特定条件的元素。

6. 遍历多维数组(嵌套循环)

multi_array=( 
    "Row1: Apple Banana"
    "Row2: Cherry Date"
)

for row in "${multi_array[@]}"; do
    for element in $row; do
        echo "$element"
    done
done

说明:用于多维数组或需要逐层处理的数据。

7. 以指定步长遍历数组

step=2
for ((i = 0; i < ${#my_array[@]}; i+=step)); do
    echo "Index $i: ${my_array[i]}"
done

说明:可以通过控制索引增量(如步长为 2)跳跃式遍历数组。

回复

  1. Hyus
    Firefox 131 10

    一键三连支持!

This is just a placeholder img.