jq中使用empty赋值变量导致无输出,此现象是否符合预期?
关于jq中未使用变量影响输出的疑问解答
这个现象完全符合jq的预期设计,核心原因在于as操作符的运行逻辑:
X as $var | Y的执行流程是:先计算表达式X的输出流,每产生一个值就绑定给$var,再基于原始输入执行过滤器Y并输出结果。- 当X是
"bla"这类能产生单个值的表达式时,变量绑定完成后,后续的.会正常执行,输出原始输入内容。 - 但如果X是
empty,这个表达式不会产生任何输出值,相当于没有触发后续Y的执行条件,整个查询自然就没有输出结果。
说白了,as后面的过滤器是否运行,取决于前面的表达式有没有输出值——empty没输出,后续代码根本跑不起来,和变量有没有被使用没关系。
内容的提问来源于stack exchange,提问作者kriomant
相关产品推荐
相关产品推荐

