Проблема с экранированием кавычек и фигурных скобок в скрипте 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[@]}"
Другие вопросы по тегам