【问题标题】:Passing bash shell variable to jq filter将 bash shell 变量传递给 jq 过滤器
【发布时间】:2018-10-23 23:45:01
【问题描述】:

试图将 bash shell 变量传递给 jq 过滤器

JSON:

{
"server1": {
"port": 3333,
"name": "foo",
"timesincelast": 248054
},
"server2": {
"port": 4444,
"name": "bar",
"timesincelast": 248054
  }
  }

Bash 命令试图执行:

 servername='server1'
 jq --arg servername "$servername" '.$servername .port'

但出现错误

 jq: error: syntax error, unexpected '$' (Unix shell quoting issues?) at 
<top-level>, line 1:

但直接替换有效

jq '.server1 .port'

【问题讨论】:

  • 不..没用

标签: bash shell jq


【解决方案1】:

你可以写:

.[$servername] | .port

或者简单地说:

.[$servername].port

【讨论】:

  • 你刚刚拯救了我的理智......非常感谢,我已经尝试过 .{$servername}.port 但它给出了同样的错误
猜你喜欢
  • 1970-01-01
  • 2017-02-22
  • 2021-03-23
  • 2016-04-17
  • 2015-01-08
相关资源
最近更新 更多