Проблема с экранированием кавычек и фигурных скобок в скрипте bash
Проблема с экранированием кавычек и скобок в bash-скрипте
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}'
1 ответ
Вместо строковой команды попробуйте использовать массив:
# 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[@]}"