ansible - 从存储在 Ansible 寄存器中的 JSON 类内容中提取键值对
问题描述
我有多个键值对存储在 Ansible 寄存器中。我想从此寄存器中提取每个键和值,并将其作为参数传递给另一个脚本。
注册:水果
的内容fruits
如下所示:
{"key":"A","value":"Apple"}
{"key":"B","value":"Banana"}
{"key":"C","value":"Cherry"}
如何从中提取每个键和值并将fruits
其作为参数传递给另一个 shell 脚本?
./script.sh A Apple
./script.sh B Banana
./script.sh C Cherry
提前致谢!
解决方案
如果数据是文本,这正是您发布的内容
fruits: |-
{"key":"A","value":"Apple"}
{"key":"B","value":"Banana"}
{"key":"C","value":"Cherry"}
然后拆分并转换行。例如
- debug:
msg: "./script.sh {{ item.key }} {{ item.value }}"
loop: "{{ fruits.splitlines()|map('from_yaml')|list }}"
给
msg: ./script.sh A Apple
msg: ./script.sh B Banana
msg: ./script.sh C Cherry
有效的 YAML
宣言
fruits:
{"key":"A","value":"Apple"}
{"key":"B","value":"Banana"}
{"key":"C","value":"Cherry"}
不是有效的 YAML
Syntax Error while loading YAML.
did not find expected key
The offending line appears to be:
{"key":"A","value":"Apple"}
{"key":"B","value":"Banana"}
^ here
推荐阅读
- python - 如何关闭在 API 调用中打开以读取的文件
- android - 当屏幕上显示大量文本时,Android 上的倒置 Flatlist 性能糟糕
- python - 对等方未响应 BitTorrent 协议中的握手消息
- google-sheets - 您如何在匹配函数中引用单元格上方的所有单元格?
- php - Laravel 请求日期验证
- azure-web-app-service - Azure 应用服务交换的时间是直接部署的数倍
- debugging - Three.JS VRAM 内存泄漏时添加删除 THREE.Geometry 到场景
- ruby-on-rails - 包含搜索字符串的 rails/PostgreSQL 查询
- regex - 如何使用正则表达式选择包含特定单词的多行?
- android - WorkManager 不适用于百度推送 SDK