Ansible 命令引用

Rom*_*ain 6 quotes command ansible

我希望将以下命令集成到 Ansible playbook 任务中:

cut -f 1 -d: /etc/passwd | xargs -n 1 -I {} bash -c ' echo -e "\n{}" ; chage -l {}'

里面的任何引号都会破坏整个命令。我怎样才能避免它让它运行整个字符串?

提前谢谢了。

max*_*zig 13

您可以简单地使用 YAML 文字块字符串语法。这样你就不需要转义任何引号。相反,您可以按原样传递 shell 命令。

例子:

- name: test task
  shell:
      cmd: |
          cut -f 1 -d: /etc/passwd | xargs -n 1 -I {} bash -c ' echo -e "\n{}" ; chage -l {}'
  tags: test
Run Code Online (Sandbox Code Playgroud)


imj*_*gel 6

你可以逃避他们\\\xe2\x80\x9d

\n\n

例子:"hello=\\"hi\\""

\n

  • 谢谢你的提示。以下是转义引号的任务: `- name: Task shell: 'sudo cut -f 1 -d: /etc/passwd | xargs -n 1 -I {} bash -c "echo -e \" \n{}\"; chage -l {}" >> users-list-{{ansible_hostname}}.log'` (3认同)