我即将提升许多本地开发的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"
在所有情况下,我只进行第一次“测试”。最后一次尝试使用ValueError: No escaped character
导致ansible崩溃,可能是因为空白被剥离了。
我错过了什么吗?
干杯
答案 0 :(得分:12)
这是因为它首先由shell处理,它会占用您使用的引号和反斜杠。
你可以将整个参数括在单引号中,告诉shell不要触及里面的内容。然后可以将变量的值括在双引号中,这将保留在ansible中。
ansible-playbook tag_changelog_on_packages.yml -e 'changelog_message="testing testing"'