为什么在 bash for 循环中使用 seq 0

Dav*_*ave 1 bash for-loop

为什么在 bash for 循环中使用 seq 0?

for i in `seq 0 $(( ${#ARRAYEX[@]} - 1 ))`
do
    echo "ARRAYEX${i}=${ARRAYEX[${i}]}"
done
Run Code Online (Sandbox Code Playgroud)

Veg*_*ger 5

seq命令生成一个数字序列。

例如

seq 0 10
Run Code Online (Sandbox Code Playgroud)

生成从 0 到 10 的数字序列:

0 1 2 3 4 5 6 7 8 9 10
Run Code Online (Sandbox Code Playgroud)

(通常每个数字都在一个新行上,但我将它们放在一起)

在您的示例中,生成从 0 到数组大小减 1 的数字序列。该seq 0 $(( ${#ARRAYEX[@]} - 1 ))部分扩展为:

0 1 2 3 4
Run Code Online (Sandbox Code Playgroud)

假设 ARRAYEX 的大小为 5。

在循环内部再次使用数组,因此循环遍历所有数组元素(因为数组的第一个元素从 0 开始)。