我正在尝试在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循环外执行该命令时,该命令可以正常工作。
预先感谢您的帮助。
答案 0 :(得分:1)
没有更多信息,我只能假设service
包含空格或其他特殊字符,因此需要用引号引起来:
aws ecs update-service --cluster "mycluster" --service "${service}" --force-new-deployment # Doesn't work
注意:您可能也应该在echo
命令中添加类似的引号,尽管它在这里不太重要,因为echo
不在乎参数是否被分解或扩展为多个参数。>