结果" />

结果 - 源码之家" />

问题与转义引号和大括号中性情急躁脚本转义引号和括号bash脚本 运行此

a="{\'copa\':\'copa2\'}" print "$a" 

结果

问题描述:

的问题是:

{'copa':'copa2'} 

使用的SH命令添加引用arrount aws_instance_tag语句并删除co​​pa值的单引号

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}' 
+0

这不应该甚至可以运行为您逝去的引号的字符串作为参数/文件SH。假设你使用了'-c',这是一个输入错误,那么你的变量会经历两次shell扩展,一次传递给sh时,一次运行时,删除引号。 – 123

而是字符串化的命令,请尝试使用数组:

# 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[@]}"