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"\"\ \}\}

おすすめ記事