Невозможно использовать переменную в качестве аргумента команды внутри цикла for - PullRequest
0 голосов
/ 31 января 2019

Я пытаюсь выполнить команду внутри цикла for.Команда ожидает параметр, который я пытаюсь передать через переменную

. Я пробовал разные подходы (со скобками, без скобок, без кавычек, без кавычек и т. Д.), И я искал документацию bash, безуспех (в любом случае я не эксперт по bash).

JQ="jq --raw-output --exit-status"

service_array="$(aws ecs list-services --cluster "mycluster" | JQ ".serviceArns")"

for service in $(echo "${service_array}" |  JQ '.[]'); do
  echo "Updating service: " ${service} # Works
  aws ecs update-service --cluster "mycluster" --service ${service} --force-new-deployment # Doesn't work
done

Ожидаемый результат - выполнение команды, фактический результат - только команда echo, кажется, работает.

service_arrayправильно заполнен, и команда работает нормально, когда я выполняю ее вне цикла for.

Заранее благодарим за помощь.

1 Ответ

0 голосов
/ 31 января 2019

Без дополнительной информации я могу только предположить, что service содержит пробелы или другие специальные символы и поэтому должен заключаться в кавычки:

aws ecs update-service --cluster "mycluster" --service "${service}" --force-new-deployment # Doesn't work

Примечание: вы, вероятно, должны добавить аналогичные кавычки в echoкоманда тоже, хотя она там менее важна, так как echo не заботится, разбиты ли аргументы или разбиты на несколько аргументов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...