簡體   English   中英

jq提取密鑰對的值並分配給bash變量

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM