如何使用 jq 创建 json 对象数组并在 bash 中设置为 var

安德烈亚斯·亨特

我的 bash 脚本中有这样的变量:

server1_name = 'server-1'
server1_url = 'http://server-1.net'

server2_name = 'server-2'
server2_url = 'http://server-2.net'

我如何使用我的变量创建这样的 json 并设置为新的 var:

[
  {
    "name": "server-1",
    "url": "http://server-1.net"
  },
  {
    "name": "server-2",
    "url": "http://server-2.net"
  }
]

我试过的:

export jsonArray = $("[{\"name\":"$server1_name",\"url\":\"$server1_url\"},{\"name\":"$server2_name",\"url\":\"$server2_url\"}]" | jq -rec .)
0石0

使用 传递您的字符串--arg,然后您可以按预期创建 JSON:

#!/bin/bash

server1_name='server-1'
server1_url='http://server-1.net'

server2_name='server-2'
server2_url='http://server-2.net'

result=$(jq -n \
    --arg name1 "$server1_name" \
    --arg url1 "$server1_url" \
    --arg name2 "$server2_name" \
    --arg url2 "$server2_url" \
    '[ { "name": $name1, "url": $url1 }, { "name": $name2, "url": $url2 } ]')

echo "$result"

将产生:

[
  {
    "name": "server-1",
    "url": "http://server-1.net"
  },
  {
    "name": "server-2",
    "url": "http://server-2.net"
  }
]

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章