首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Ansible ad-hoc shell命令引号内的引号-如何转义?

Ansible ad-hoc shell命令引号内的引号-如何转义?
EN

Stack Overflow用户
提问于 2017-05-16 02:37:18
回答 2查看 4K关注 0票数 2

我有一个相当简单的ansible adhoc命令,使用shell来运行chfn:

代码语言:javascript
复制
ansible all -i ./inventory/all  -s -K -m shell -a 'chfn -f "$HOSTNAME root" root'

chfn需要双引号,我尝试了几种不同的方法来转义它们,但都没有成功。我尝试用双引号和单引号将shell命令括起来,并使用/转义双引号,也尝试使用单引号。运行chfn -f "$HOSTNAME root" root运行得很好,但我不知道如何让ansible以这种方式运行它。(我知道这是一种选择,但如果可能的话,我不想把它转换成shell脚本,并通过ansible运行它)

EN

回答 2

Stack Overflow用户

发布于 2018-10-23 20:49:06

当您有嵌套的引号时,如下面的示例所示,您可以通过使用另一个单引号转义来对单引号进行转义。

使周围的引号为单引号“,这样您就不需要转义双引号了”,您可以使用另一个单引号来转义命令中的单引号,如'‘

代码语言:javascript
复制
 - name: Notify on slack
    command: 'curl -X POST -H ''Content-type: application/json'' --data ''{"text":"{{inventory_hostname}} has been updated"}'' https://hooks.slack.com/services/XXXX/YYY/ZZZ'
    when: inventory_hostname == 'host1.de' or inventory_hostname == 'host.de'
    delegate_to: localhost
票数 1
EN

Stack Overflow用户

发布于 2018-01-10 01:51:09

ansible在即席命令中对此很棘手。如果你想按原样传递它,你必须转义引号。下面是一些例子:

代码语言:javascript
复制
ansible localhost -a 'echo \"$HOSTNAME\"'
localhost | SUCCESS | rc=0 >>
"$HOSTNAME"

ansible localhost -a "echo $HOSTNAME"
localhost | SUCCESS | rc=0 >> 
my_hostname
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43986577

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档