在 bash 上打印单引号中的变量 |奇怪的变量

在 bash 上打印单引号中的变量 |奇怪的变量

在 bash 脚本上,我需要将日期作为 ansible 额外变量传递,但遇到一些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 playbook 上的日期。

答案1

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

ansible-playbook 命令(上面重复)无论如何都不会看到你的单引号。它会看到以下内容:

  • 参数#1 copyy2s3.yml
  • 参数#2 --extra-vars
  • 参数#3 cdate={{ "$DT" }}

请注意,$DT 将是一个文字字符串,而不是 shell 变量,这些空格也将成为参数的一部分。有很多方法可以做到这一点,Cuonglm 已经向您展示了这一点。

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

相关内容