jq 的这种行为是否不允许使用 $module 作为变量名,在任何地方指定?
$ jq -n --arg 'module' 'X' '$module'
jq: error: syntax error, unexpected module, expecting IDENT or __loc__ (Unix shell quoting issues?) at <top-level>, line 1:
$module
jq: 1 compile error
我的期望是 jq 会打印“X”,但事实并非如此。为什么?
在jq 1.6及更早版本中,$变量名称中不能使用关键字。 the jq wiki 中提到了这一点,其中给出了以下关键字列表:
__loc__ and as break catch def elif else end
foreach if import include label module
or reduce then try
任何特定版本的 jq 的关键字列表都可以从 lexer.l 文件中派生,该文件的“主”版本是 https://github.com/stedolan/jq/blob/master/src/lexer。我
——
2019年jq的开发版本中,https://github.com/jqlang/jq/commit/c72ed135e4f1b5a02a8fb3f6cd46f27513ecab2a删除了该限制 因此在 jq 1.7 中将不再存在