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