Ansible:命令行选项';d';[from-d]与其他选项结合使用时不理解

Ansible:命令行选项';d';[from-d]与其他选项结合使用时不理解,ansible,ansible-role,Ansible,Ansible Role,更新:尽管此Q被标记为打字错误(因此“对用户不太有用”),但问题实际上是需要使用正确的ansible模块shell,而不是命令模块 我希望有人能告诉我哪里出了问题,我猜这与命令行中的语法或转义或字符有关(尽管我尝试用cut替换awk(带卷发),但没有运气),这导致了以下错误: “stderr”:“\u001b[1;31mE:\u001b[0m命令行选项“F”[from-F,]与其他选项组合使用时无法理解。\u001b[0m” 基本上,在我创建的角色中,我想动态地存储一个列表,列出碰巧安装的gno

更新:尽管此Q被标记为打字错误(因此“对用户不太有用”),但问题实际上是需要使用正确的ansible模块<代码>shell,而不是
命令
模块

我希望有人能告诉我哪里出了问题,我猜这与命令行中的语法或转义或字符有关(尽管我尝试用cut替换awk(带卷发),但没有运气),这导致了以下错误:

“stderr”:“\u001b[1;31mE:\u001b[0m命令行选项“F”[from-F,]与其他选项组合使用时无法理解。\u001b[0m”

基本上,在我创建的角色中,我想动态地存储一个列表,列出碰巧安装的gnome或x11包,然后使用apt删除它们;

- name: Generate variable containing all gnome GUI packages
  command: apt list | awk -F, '/gnome/ && /installed/ {print $1}'
  register: gui_packages
  ignore_errors: yes
  changed_when: false

- name: Remove entire GUI
  apt:
    name:
      - "{{ gui_packages_to_remove_specific }}"
      - "{{ gui_packages }}"
    state: absent
    force: yes
  when:
    - remove_gui_packages is defined
    - remove_gui_packages is true
提前感谢您提供的任何帮助!!

来自
命令的
模块:

命令不会通过shell处理,因此$HOSTNAME等变量和“*”、“”、“|”、“;”和“&”等操作将不起作用。如果需要这些功能,请使用ansible.builtin.shell模块

您的语法问题是您没有运行
apt
管道到
awk
。您正在运行
apt
,并将
list | awk-F、/gnome/&/installed/{print$1}'
作为参数提供给它。

来自
命令的
模块:

命令不会通过shell处理,因此$HOSTNAME等变量和“*”、“”、“|”、“;”和“&”等操作将不起作用。如果需要这些功能,请使用ansible.builtin.shell模块


您的语法问题是您没有运行
apt
管道到
awk
。您正在运行
apt
,并将所有
list | awk-F、/gnome/&/installed/{print$1}'
作为参数提供给它。

命令
不支持管道(请参阅文档)。使用
shell
。此外,注册的var将包含有关完整任务的信息。命令的输出将在
gui\u包中提供。stdout
gui\u包中提供。stdout\u行
取决于您希望如何处理它。
命令
不支持管道(请参阅文档)。使用
shell
。此外,注册的var将包含有关完整任务的信息。您的命令输出将在
gui\u包中提供。stdout
gui\u包中提供。stdout\u行
取决于您希望如何处理它。谢谢!它现在生成了一个列表ok,但我无法将其输入apt模块。将其作为循环传递是可行的,但效率很低。将其作为gui_packages.stdout或gui_packages.stdout_行传递失败是因为列表格式错误吗?此代码有效:-name:Generate variable包含所有gnome gui包shell:apt list 2>/dev/null | awk-F',/gnome | x11/&/installed/{print$1}awk-F\/'{print$1}'register:gui_packages ignore_errors:yes changed_when:false-name:DEBUG DEBUG:msg:“{item}}”循环:“{{gui_packages.stdout_lines}”谢谢!它现在生成了一个列表,但我在将其输入apt模块时遇到了问题。将其作为循环传递是可行的,但效率很低。将其作为gui_packages.stdout或gui_packages.stdout_行传递失败是否列表格式错误?此代码有效:-name:生成包含所有gnome gui包的变量shell:apt list 2>/dev/null | awk-F'/gnome | x11/&&/installed/{print$1}'| awk-F\/{print$1}'寄存器:gui_包忽略_错误:yes更改_时:false-name:DEBUG调试:msg:{item}}循环:{{{gui gui packages.stdout_行}