为了账号安全,请及时绑定邮箱和手机立即绑定

将bash变量传递给jq select

将bash变量传递给jq select

慕田峪4524236 2019-11-29 09:26:39
我已经编写了一个脚本来从中检索某些值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 printedprojectID=$(cat file.json | jq -r '.resource[] | select(.username=="$EMAILID") | .id')echo "$projectID"
查看完整描述

3 回答

?
富国沪深

TA贡献1790条经验 获得超9个赞

还考虑将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 exported

EMAILID="$EMAILID" jq -n 'env.EMAILID'

输出是一个JSON字符串:


"foo@bar.com"


查看完整回答
反对 回复 2019-11-29
  • 3 回答
  • 0 关注
  • 1195 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信