Bash我不能打印数组的所有元素,而只能打印最后一个

时间:2018-09-21 18:37:24

标签: arrays bash for-loop

我无法将for中的所有值分配到一个数组中,所以我只能打印最后一个

   ###previouse code
    for item2 in "${!TUR[@]}"; do
        ARRAY="${item2}"
    done

    for item in "${ARRAY[@]}"; do
        printf "$ARRAY \n";
    done

如何将所有元素成功分配给ARRAY变量并打印出所有元素?

1 个答案:

答案 0 :(得分:2)

您的第一个问题是将元素添加到数组中,执行类似array+=("$item_to_add")

的操作

因此,您可能会遇到类似这样的事情:

tur=( A B C D )

for item in "${tur[@]}"; do
    arr+=("$item")
done
for e in "${arr[@]}"; do
    printf "%s\n" "$e";
done

BTW:最好避免使用Bash变量名INCAPS,因为Bash会将这些变量名用于内部使用。约定是对用户变量名使用小写字母。

顺便说一句:第二个循环在功能上与以下相同:

$ printf "%s\n" "${arr[@]}"

两个循环都可以替换为:

arr=("${tur[@]}")             # copy the array
printf "%s\n" "${arr[@]}"     # print the new array