我尝试使用+ =运算符在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
任何帮助将不胜感激。
答案 0 :(得分:2)
echo "${args[@]}"
Bash数组的语法令人困惑。使用${args[@]}
获取数组的所有元素。使用${args}
等效于${args[0]}
,它获取第一个元素(索引为0)。
请参见ShellCheck:Expanding 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