将元素追加到bash中的数组

时间:2019-03-23 18:08:49

标签: arrays bash

我尝试使用+ =运算符在bash中追加一个数组,但不知道为什么它不起作用

#!/bin/bash


i=0
args=()
while [ $i -lt 5 ]; do

    args+=("${i}")
    echo "${args}"
    let i=i+1

done

预期结果

0
0 1
0 1 2
0 1 2 3
0 1 2 3 4

实际结果

0
0
0
0
0

任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:2)

echo "${args[@]}"

Bash数组的语法令人困惑。使用${args[@]}获取数组的所有元素。使用${args}等效于${args[0]},它获取第一个元素(索引为0)。

请参见ShellCheckExpanding an array without an index only gives the first element.

此外,您可以将let i=i+1简化为((i++)),但是使用C样式的for循环甚至更简单。同样,您无需在添加args之前对其进行定义。

所以:

#!/bin/bash
for ((i=0; i<5; ++i)); do
    args+=($i)
    echo "${args[@]}"
done