2015-09-15 83 views
4

我即將碰到很多本地開發的debian軟件包的更新日誌。我正在使用'Ansible'從devscripts包中調用'dch'。我正在使用Ansible,因爲我已經有了Ansible變量中列出的軟件包的顛覆路徑。我希望能夠將實際的更改日誌消息作爲命令行變量輸入,但似乎無法解析命令行中輸入的變量中的空格。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崩潰,可能是因爲空白被剝離了。

我錯過了什麼?

乾杯

回答

7

這是因爲它是由shell首先它吃得您使用引號和反斜槓處理。

可以包圍整個論點爲單引號告訴殼不要觸摸裏面是什麼。然後,變量的值可以被包含在雙引號中,這將保持在那裏以保證正確。

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

+0

對不起,回覆遲了。它的工作,謝謝! –

+0

對於其他人來這裏尋找一種方法來使用包含空格的shell變量來完成這個工作,這個基本原則仍然有效,但是你必須將雙引號和單引號取反,比如'-e「name ='$ {NAME }「」' –