问题与转义引号和大括号中性情急躁脚本转义引号和括号bash脚本 运行此 a="{\'copa\':\'copa2\'}" print "$a"
a="{\'copa\':\'copa2\'}" print "$a"
结果
问题描述:
的问题是:
{'copa':'copa2'}
使用的SH命令添加引用arrount 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}'
答
而是字符串化的命令,请尝试使用数组:
# define the array
cmd=(
ansible-playbook
playbooks/environment-provisioning.yml
-e env=perf
-e num_injectors_zone_a=2
-t performance_services
-e aws_instance_tags="$a"
)
# then run it
"${cmd[@]}"
这不应该甚至可以运行为您逝去的引号的字符串作为参数/文件SH。假设你使用了'-c',这是一个输入错误,那么你的变量会经历两次shell扩展,一次传递给sh时,一次运行时,删除引号。 – 123