Как использовать подстановку для цикла в команде bash -c?

Это, кажется, общая проблема. Патч для повторных попыток Ansible ssh от 2016 г.

Возможно, лучшим решением будет подождать, пока sshd будет готов к подключению. Исходный поток с этим невозможным кодовым решением:

[Задачи создания ВМ...]

  -имя :Дождитесь завершения установки Kickstart и перезагрузки виртуальной машины. локальный _действие :ожидание _для хоста = {{ vm _имя хоста }} порт = 22 задержка = 30 тайм-аут = 1200 состояние = запущено

  -имя :Теперь настройте виртуальную машину...

0
03.10.2019, 23:53
1 ответ

Есть две проблемы.

time bash -c "for i in {0..23}; do echo $i & done"

работает не так, как вы ожидаете, потому что $iраскрывается сразу; вам нужно использовать одинарные кавычки:

time bash -c 'for i in {0..23}; do echo $i & done'

Чтобы заставить timeждать всех фоновых заданий, вы можете использоватьwait:

time bash -c 'for i in {0..23}; do sleep $i & done; wait'

Это заставляет оболочку ожидать завершения всех своих заданий, в результате чего timeизмеряется время, затраченное на все операции вместе.

7
28.01.2020, 02:14

Теги

Похожие вопросы