我无法将for中的所有值分配到一个数组中,所以我只能打印最后一个
###previouse code
for item2 in "${!TUR[@]}"; do
ARRAY="${item2}"
done
for item in "${ARRAY[@]}"; do
printf "$ARRAY \n";
done
如何将所有元素成功分配给ARRAY变量并打印出所有元素?
答案 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