【发布时间】:2017-09-26 13:21:36
【问题描述】:
在 bash 脚本中转义引号和括号的问题 运行这个
a="{\'copa\':\'copa2\'}"
print "$a"
结果是:
{'copa':'copa2'}
在 sh 命令中使用 a 在 aws_instance_tag 语句中添加引号并删除 copa 值的单引号
sh "ansible-playbook playbooks/environment-provisioning.yml -e env=perf -e num_injectors_zone_a=2 -t performance_services -e aws_instance_tags=${a} "
结果
ansible-playbook playbooks/environment-provisioning.yml -e env=perf -e
num_injectors_zone_a=2 -t performance_services -e
'aws_instance_tags={copa:copa2}'
【问题讨论】:
-
这甚至不应该运行,因为您将引用的字符串作为参数/文件传递给 sh.假设您使用了
-c并且这是一个错字,那么您的变量会经历两次 shell 扩展,一次是传递给 sh,一次是运行时,删除引号。
标签: bash escaping curly-braces single-quotes