将元素附加到 bash 中的数组

Ste*_*e J 11 arrays bash

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

#!/bin/bash


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

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

done
Run Code Online (Sandbox Code Playgroud)

预期成绩

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

实际结果

0
0
0
0
0
Run Code Online (Sandbox Code Playgroud)

任何帮助,将不胜感激。

wja*_*rea 24

它确实有效,但您只是在回显数组的第一个元素。改用这个:

echo "${args[@]}"
Run Code Online (Sandbox Code Playgroud)

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

请参阅ShellCheck扩展没有索引的数组仅给出第一个元素。

另外顺便说一句,您可以简化let i=i+1((i++)),但使用 C 样式for循环更简单。而且您也不需要args在添加之前定义。

所以:

echo "${args[@]}"
Run Code Online (Sandbox Code Playgroud)