gpt4 book ai didi

json - 将 bash 变量传递给 jq

转载 作者:IT老高 更新时间:2023-10-28 12:44:21 24 4
gpt4 key购买 nike

我编写了一个脚本来从 file.json 中检索特定值。如果我向 jq select 提供值,它会起作用,但变量似乎不起作用(或者我不知道如何使用它)。

#!/bin/sh

#this works ***
projectID=$(cat file.json | jq -r '.resource[] | select(.username=="myemail@hotmail.com") | .id')
echo "$projectID"

EMAILID=myemail@hotmail.com

#this does not work *** no value is printed
projectID=$(cat file.json | jq -r '.resource[] | select(.username=="$EMAILID") | .id')
echo "$projectID"

最佳答案

考虑也将 shell 变量 (EMAILID) 作为 jq 变量传递(这里也是 EMAILID,为了便于说明):

   projectID=$(jq -r --arg EMAILID "$EMAILID" '
.resource[]
| select(.username==$EMAILID)
| .id' file.json)

后记

为了记录,另一种可能性是使用 jq 的 env 函数来访问环境变量。例如,考虑以下 bash 命令序列:

EMAILID=foo@bar.com  # not exported
EMAILID="$EMAILID" jq -n 'env.EMAILID'

输出是一个 JSON 字符串:

"foo@bar.com"

关于json - 将 bash 变量传递给 jq,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40027395/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com