【发布时间】:2018-12-29 15:55:46
【问题描述】:
我正在使用 aws ssm 执行操作任务。 执行类似如下命令时(细节替换),远程执行时变量i的值设置不正确
我的代码有什么问题?
aws ssm send-command --document-name "AWS-RunShellScript" --instance-ids $instance_id \
--parameters '{"commands":["count=4; for i in { 1..$count }; do echo $i; ssh $(server_$i) bash -c '"'echo $i && echo $(date +%Y-%m-%d)'"'; done;"],"executionTimeout":["3600"]}' \
--timeout-seconds 600 --region us-west-2
- 第一个回显将返回 1,2,3,4
- 但是第二个回显将返回 4, 4, 4, 4
期望:两者都应该返回 1,2,3,4
【问题讨论】:
-
我已将问题编辑为使用代码格式(四个空格前缀的东西),并将其分成三行带续行而不是一长行;这不应该改变意思。但是结果仍然很难理解。在我看来,您至少有引用问题:您似乎试图将单引号字符串嵌套在另一个单引号字符串中,但这根本不起作用。顺便说一句,
{ 1..$count }也不是有效的 shell 语法,因为在替换变量之前大括号会被扩展。 -
Bash 命令行中的引用显然被破坏了,但我无法弄清楚代码的真正含义。你能解释一下它应该做什么,或者edit 的问题是显示一个在本地执行你想要的工作脚本?