jq:错误:X/0 未定义,第 1 行:

jq:错误:X/0 未定义,第 1 行:

我正在尝试从下面的 JSON 中提取值:

% export test='{"a-b-c":"x-y-z"}'
% echo $test
{"a-b-c":"x-y-z"}
% echo $test | jq .a-b-c
jq: error: b/0 is not defined at <top-level>, line 1:
.a-b-c
jq: error: c/0 is not defined at <top-level>, line 1:
.a-b-c
jq: 2 compile errors
% echo $test | jq '."a-b-c"'
"x-y-z"
%

虽然最后一行“有效”,但我的最终目标是拥有 shell 脚本并用变量替换“abc”参数,但是由于我必须使用单引号,因此实际值没有被传递。

% export var1=a-b-c
% echo $var1
a-b-c
% echo $test | jq '."$var1"'
null
%

请指教)

答案1

使用该--arg选项通过 shell 变量的值初始化 jq 变量。

jq --arg key "$var1" '.[$key]'

调用 jq并向下滚动到--arg

答案2

我已经让它工作了:

% echo $test | jq ".\"$var1\""
"x-y-z"
%

谢谢!

相关内容