繁体   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