[英]jq extract value of keypair and assign to bash variable
jq有時會引起我的注意。 假設您有一個名為emails.json
的json文件,看起來像這樣;
[
{
"ParameterKey": "foo1",
"ParameterValue": "bar1"
},
{
"ParameterKey": "foo2",
"ParameterValue": "bar2"
}
]
如果我使用參數foo1運行bash腳本(我們稱其為script.sh
),我希望將bar1分配給名為emailAdd
的變量。 同樣,如果我使用參數foo2,則希望分配bar2。
我以為我的腳本如下所示,但是我得到了一個空變量。
#!/usr/bin/env bash
EMAIL=$1
emailAdd=$(jq --arg email "$EMAIL" '.[] | select(.ParameterKey=="$email") | .ParameterValue' < emails.json)
echo "address is " $emailAdd
因此,運行sh script.sh foo1
我希望address is bar1
,等等
您幾乎正確了。 您不需要$email
周圍的引號,因為與shell不同, jq
實際上將其視為包含值的變量,而不是擴展為任意文本的變量。 您可能還希望使用-r
選項,以便輸出為bar1
而不是"bar1"
。
#!/usr/bin/env bash
EMAIL=$1
emailAdd=$(jq -r --arg email "$EMAIL" '.[] | select(.ParameterKey==$email) | .ParameterValue' < emails.json)
echo "address is $emailAdd"
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.