我在Linux上的命令行上调用jq,如下所示:
jq -s -R -f get.jq get-config.txt
返回:
error: syntax error, unexpected INVALID_CHARACTER, expecting $end
.1 compile error
但get.jq文件中只有一个点可以像
一样进行测试jq -s -R . get-config.txt
返回正常。那么jq文件有什么问题呢?
答案 0 :(得分:4)
当我使用MS Windows行尾时,我得到一个非常相似的错误。例如,准备几个文件,id.jq
带有合理的Unix行尾,id-ms.jq
带有Microsoft的CP / M样式CR-LF行尾,最后准备id-utf8bom.jq
带有Unix行尾,一个UTF-8 BOM:
printf '.\n' > id.jq
printf '.\r\n' > id-ms.jq
printf '\xef\xbb\xbf.\n' > id-utf8bom.jq
并且Unix版本成功:
echo true | jq -f id.jq
文件中包含回车符和换行符的新行:
echo true | jq -f id-ms.jq
导致jq(1.6版)因以下原因失败
:jq: error: syntax error, unexpected INVALID_CHARACTER (Unix shell quoting issues?) at <top-level>, line 1:
jq: error: try .["field"] instead of .field for unusually named fields at <top-level>, line 1:
.
jq: 2 compile errors
以及具有UTF-8 BOM版本的版本:
echo true | jq -f id-utf8bom.jq
给出了更有限的错误消息:
jq: error: syntax error, unexpected INVALID_CHARACTER, expecting $end (Unix shell quoting issues?) at <top-level>, line 1:
.
jq: 1 compile error
如果能够识别/处理这些相对常见的编码,那就太好了,但是目前看来还不是!
答案 1 :(得分:0)
好的,发现这个烦人的“bug”:我的jq文件是UTF-8,如果我把它改成ansi就行了!感谢您的支持。
答案 2 :(得分:0)