bash 변수에서 작은따옴표로 변수 인쇄 |

bash 변수에서 작은따옴표로 변수 인쇄 |

Bash 스크립트에서는 날짜를 추가 변수로 전달해야 하는데 몇 가지 single quotes문제가 있습니다.

...
$DT="03-04-17"
ansible-playbook copy2s3.yml --extra-vars 'cdate={{ "$DT" }}'

수동 ansible-playbook은 다음과 같이 작동합니다.

$ ansible-playbook copy2s3.yml --extra-vars 'cdate={{ "03-04-17" }}'

여기서는 ansible 플레이북의 날짜를 동적으로 전달하고 있습니다.

답변1

ansible-playbook copy2s3.yml --extra-vars 'cdate={{ "$DT" }}'

ansible-playbook 명령(위에서 복제됨)은 어쨌든 작은따옴표를 표시하지 않습니다. 다음이 표시됩니다.

  • 매개변수 #1 copyy2s3.yml
  • 매개변수 #2 --extra-vars
  • 매개변수 #3 cdate={{ "$DT" }}

$DT는 쉘 변수가 아닌 리터럴 문자열이 되며 이러한 공백도 매개변수의 일부가 됩니다. 이를 수행하는 방법에는 여러 가지가 있으며 Cuonglm은 이를 보여주었습니다.

  • 'cdate={{ "'"$DT"'" }}'
  • 'cdate={{ '\""$DT"\"' }}'
  • "cdate={{ \"$DT\" }}"
  • cdate=\{\{\ \""$DT"\"\ \}\}

관련 정보