Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
for中的printf没有在bash中迭代_Bash - Fatal编程技术网

for中的printf没有在bash中迭代

for中的printf没有在bash中迭代,bash,Bash,团队, 我试图在bash over for循环中使用一些字符串打印数组的所有元素,但它只是打印元素而不是字符串 if [ "$FILTER" = "ALL" ]; then vm_ip_all=$(./command_to_get_ips) printf "got all IPs \\n %s" "$vm_ip_all" else echo "could not get all IPs" fi #for vm_ip in "${vm_ip_all[@]}"; do <<

团队, 我试图在bash over for循环中使用一些字符串打印数组的所有元素,但它只是打印元素而不是字符串


if [ "$FILTER" = "ALL" ]; then
  vm_ip_all=$(./command_to_get_ips)
  printf "got all IPs \\n %s" "$vm_ip_all"
else
  echo "could not get all IPs"
fi

#for vm_ip in "${vm_ip_all[@]}"; do <<same result as below
for vm_ip in "${vm_ip_all}"; do
  printf "\\n BEGIN FOR \\n"
  echo "iterating for $vm_ip"
echo "END FOR"
done
预期产出:

got all IPs
 10.0.1.6
10.0.1.10
BEGIN FOR
iterating for 10.0.1.6
iterating for 10.0.1.10
END FOR
vm_ip_all

10.0.1.6 10.0.1.10 ```
我解决了

vm_ip_all=$(./command_to_get_ips)
for vm_ip in $vm_ip_all; do
  echo "iterating for $vm_ip"
done

打印数组
printf
甚至不需要循环。尝试以下方法:

printf '\n BEGIN FOR \n'
printf 'iterating for %s\n' "${vm_ip_all[@]}"
printf 'END FOR\n'

您的
vm\u ip\u all
数组填充错误。参见此处解释的方法:嗯,仍然无法理解。我正在获取“vm\u ip\u all”的所有元素,但无法重复文本
迭代
你能用新的
vm\u ip\u all
数组填充代码更新你的问题吗?好的。我粘贴了我的vm_ip_all的外观,或者,当它不是数组时,使用
printf“迭代%s\n”${vm_ip_all}
以避免循环。@WalterA,对,但不相关,因为OP是“试图为数组打印所有元素”,而
$vm_ip_all
是数组。
printf '\n BEGIN FOR \n'
printf 'iterating for %s\n' "${vm_ip_all[@]}"
printf 'END FOR\n'