You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何提取Ansible register存储的fruits键值对并传递给shell脚本

Ansible 实现方案

首先确认你的fruits注册变量的结构,对应两种写法:

情况1:fruits 已经是结构化的字典列表

如果fruits本身就是如下格式的列表对象:

fruits:
  - {"key":"A","value":"Apple"}
  - {"key":"B","value":"Banana"}
  - {"key":"C","value":"Cherry"}

直接用loop遍历即可,任务示例:

- name: 依次调用script.sh传参
  ansible.builtin.shell: "./script.sh {{ item.key | quote }} {{ item.value | quote }}"
  args:
    chdir: /opt/your_script_path # 替换为script.sh实际所在的目录
  loop: "{{ fruits }}"

情况2:fruits 存储的是原始JSON行文本

如果之前的任务输出是纯文本,fruits.stdout_lines是每行一个JSON字符串的数组,需要先对每行做JSON解析再取值:

- name: 解析JSON行后调用script.sh
  ansible.builtin.shell: "./script.sh {{ (item | from_json).key | quote }} {{ (item | from_json).value | quote }}"
  args:
    chdir: /opt/your_script_path
  loop: "{{ fruits.stdout_lines }}"

说明

  • 示例中使用quote过滤器是为了对参数做转义,避免参数包含空格、特殊字符时出现shell解析错误,无特殊字符时可省略。
  • 执行时Ansible会自动按列表顺序逐个遍历,最终生成你需要的三条命令执行效果。

内容的提问来源于stack exchange,提问作者Sugetha Chandran

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 21:36:04