printf в течение не повторяется в Bash - PullRequest
0 голосов
/ 03 июля 2019

Команда, я пытаюсь напечатать все элементы для массива с некоторой строкой в ​​цикле 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
10.0.1.10

Ожидаемый вывод:

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 ```

Ответы [ 2 ]

1 голос
/ 03 июля 2019

Я решил это

vm_ip_all=$(./command_to_get_ips)
for vm_ip in $vm_ip_all; do
  echo "iterating for $vm_ip"
done
0 голосов
/ 04 июля 2019

Для печати массива printf даже не нужен цикл. Попробуйте что-то вроде:

printf '\n BEGIN FOR \n'
printf 'iterating for %s\n' "${vm_ip_all[@]}"
printf 'END FOR\n'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...