JQ 输出未正确分配给变量

JQ output not correctly assinging to variable

下面jq查询输出正确。

ROUTE_ID= jq -r '.[][]? | select(.pattern? == "*test.com/testcards/email/*").id' route.json

route.json 文件包含 json 输出。

但是 echo "this is route $ROUTE_ID" 或 echo "this is route $ROUTE_ID does not return value for $ROUTE_ID"

你现在正在做的是将环境变量ROUTE_ID设置为nothing来执行jq,例如:

MY_ENV=abc command

将环境变量“MY_ENV”设置为“abc”以执行命令。

您要做的是将命令的输出存储在一个变量中,为此您需要使用命令替换:

my_var=$(command)

你的情况:

route_id=$(jq -r '.[][]? | select(.pattern? == "test.com/testcards/email/").id' route.json)

吹毛求疵;尽可能使用小写变量名称,因为 UPPER_CASE 是“保留”用于导出的环境变量。