0

Trying to pass a bash shell variable into a jq filter

JSON:

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

Bash command trying to execute:

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

But getting an error

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

But direct substitution works

jq '.server1 .port'
ma7555
  • 362
  • 5
  • 17

1 Answers1

3

You could write:

.[$servername] | .port

or simply:

.[$servername].port
peak
  • 105,803
  • 17
  • 152
  • 177
  • You just saved my sanity... thank you so much, I have tried .{$servername}.port but it gave the same error – ma7555 Oct 23 '18 at 23:59