将bash变量传递给jq select

我已经编写了一个脚本来从中检索某些值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"


慕田峪4524236
浏览 1196回答 3
3回答

富国沪深

还考虑将shell变量(EMAILID)作为jq变量传递(为便于说明,此处也称为EMAILID):   projectID=$(cat file.json |      jq -r --arg EMAILID "$EMAILID" '        .resource[]        | select(.username==$EMAILID)         | .id')后记作为记录,另一种可能性是使用jq env函数访问环境变量。例如,考虑以下bash命令序列:EMAILID=foo@bar.com  # not exportedEMAILID="$EMAILID" jq -n 'env.EMAILID'输出是一个JSON字符串:"foo@bar.com"
打开App,查看更多内容
随时随地看视频慕课网APP