web-dev-qa-db-ja.com

jq出力をBash変数に設定する

Curlを使用して、次のようにREST APIからJSONを取得しています。

content=$(curl -s  -X GET -H "Header:Value" http://127.0.0.1:8200/etc)
echo "${content}"| jq -r '.data.value'

これは私が必要とする価値を生み出します。しかしながら;上記のコードを次のように変更すると、

content=$(curl -s  -X GET -H "Header:Value" http://127.0.0.1:8200/etc)
username=$(echo "${content}"| jq -r '.data.value')
echo $username

何も生成しません。これを変更して、username変数に出力が割り当てられるようにするにはどうすればよいですか?

17
jymbo

コードをこれに変更し、それは機能しました:

content=$(curl -s  -X GET -H "Header:Value" http://127.0.0.1:8200/etc) 
username=$( echo jq -r  '.data.value' <<< "${content}" ) 
echo ${username}
14
jymbo

これは、2行目の「エコー」を失った場合にのみ機能します。

content=$(curl -s  -X GET -H "Header:Value" http://127.0.0.1:8200/etc) 
username=$( echo jq -r  '.data.value' <<< "${content}" ) 
echo ${username}
4
Anonymous

次のように1つのライナーに変換できます。

username=$( curl -s  -X GET -H "Header:Value" http://127.0.0.1:8200/etc |  jq -r  '.data.value' ) 
echo ${username}
0
ShahNewazKhan