ansible,命令行变量中的空格

Kri*_*sen 12 ansible

我即将提升许多本地开发的debian软件包的更新日志.我使用'Ansible'从devscripts包中调用'dch'.我正在使用Ansible,因为我已经拥有了Ansible变量中列出的包的subversion路径.我希望能够将实际的changelog消息作为命令行变量输入,但似乎ansible无法解析在命令行中输入的变量中的空格.

我试过了

ansible-playbook tag_changelog_on_packages.yml -e changelog_message="testing testing"
ansible-playbook tag_changelog_on_packages.yml -e changelog_message='testing testing'
ansible-playbook tag_changelog_on_packages.yml -e changelog_message=testing\ testing
ansible-playbook tag_changelog_on_packages.yml -e changelog_message="testing\ testing"
Run Code Online (Sandbox Code Playgroud)

在所有情况下,我只进行第一次"测试".最后一次尝试使得ansible崩溃ValueError: No escaped character可能是因为空白被剥离了.

我错过了什么吗?

干杯

mit*_*roo 17

这是因为它首先由shell处理,它会吃你使用的引号和反斜杠.

你可以将整个参数括在单引号中,告诉shell不要触及里面的内容.然后可以将变量的值括在双引号中,这将保留在ansible中.

ansible-playbook tag_changelog_on_packages.yml -e 'changelog_message="testing testing"'

  • 对于其他来这里的人来说,寻找一种使用包含空格的shell变量来使其工作的方法,这个基本原理仍然有效,但是您必须将双引号和单引号都取反,例如`-e“ name ='$ {NAME} '“` (4认同)