如何在shell脚本中的jq中获取用户输入作为值

时间:2019-10-29 16:29:31

标签: shell jq

我有一个JSON文件,我正在尝试从下面获取值

[a223180n@363748ln41dk012 ~]$ cat status.json| jq  '.details.server1.status'
"UP"

在我的脚本中,我可以选择用户输入服务器名称的位置。因此,我需要脚本选择该值并相应地更新我在下面使用的jq命令,但失败了。

jq是1.6版本

[a223180n@363748ln41dk012 ~]$ cat status.json| jq --arg server server1'.details.$server.status'
jq: error: syntax error, unexpected '$', expecting FORMAT or QQSTRING_START (Unix shell quoting issues?) at <top-level>, line 1:
.details.$service.status
jq: 1 compile error

1 个答案:

答案 0 :(得分:2)

< status.json jq --arg server server1 '.details[$server].status'

点运算符是[]运算符的特殊版本,仅与 literal 键一起使用。您在此处有一个用于键的变量,因此您需要[]运算符。