首页 > 解决方案 > Bash 我不能打印数组的所有元素,只能打印最后一个

问题描述

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

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

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

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

标签: arraysbashfor-loop

解决方案


您的第一个问题是将元素添加到数组中,您可以执行类似的操作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

顺便说一句:最好避免使用 Bash 变量名INCAPS,因为 Bash 将这些变量名用于内部使用。约定是使用小写的用户变量名。

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

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

两个循环都可以替换为:

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

推荐阅读