加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

bash – 为jq数组中的每个项运行一个命令

发布时间:2020-12-15 17:03:25 所属栏目:安全 来源:网络整理
导读:这是我的输入文件的样子: [ { "ConfigType": "ABC","Prop1": 3,"Prop2": 30 },{ "ConfigType": "XYZ","Prop3": "Hello","Prop4": "World","Prop5": "Application" }] 我需要为每个项目准备插入语句. 这就是我的jq命令的样子,它给了我每个项目. cat app-cnfg
这是我的输入文件的样子:
[
  {
    "ConfigType": "ABC","Prop1": 3,"Prop2": 30
  },{
    "ConfigType": "XYZ","Prop3": "Hello","Prop4": "World","Prop5": "Application"
  }
]

我需要为每个项目准备插入语句.

这就是我的jq命令的样子,它给了我每个项目.

cat app-cnfg.json |  jq -r ".[]"

如何执行aws dynamodb put-item –table-name“xxx”–item<< array's element>>?

您可以应用过滤器来提取JSON数组的每个元素,并将其以bash形式提供给数组,然后再迭代其内容.假设你有bash 4.0或更高版本,你可以使用mapfile命令
mapfile -t configArr < <(jq -c '.[]'  < app-cnfg.json)

现在我们遍历数组,为每个配置项运行命令,

for config in "${configArr[@]}"; do
    aws dynamodb put-item --table-name "xxx" --item "$config"
done

(或)使用更有效的方法使用while循环和read命令从输入数据流中读取(适用于不支持mapfile或readarray的bash版本)

while IFS= read -r config; do
    aws dynamodb put-item --table-name "xxx" --item "$config"
done< <(jq -c '.[]' < app-cnfg.json)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读