【发布时间】:2019-10-18 15:08:55
【问题描述】:
我使用了下面的命令,它会在属性值中得到一些子字符串。
skipped=$(echo "$value" | jq -f '.[].output | scan("totalSkipped+: [[:digit:]]+")' | sed 's/"//g' )
我通过 Jenkins 作业在 shell 中运行了这个脚本。并观察到以下错误消息:
/tmp/jenkins7615126817764256878.sh: command substitution: line 30: syntax error near unexpected token `"totalSkipped+: [[:digit:]]+"'
/tmp/jenkins7615126817764256878.sh: command substitution: line 30: `echo "$value" | jq .[].output | scan("totalSkipped+: [[:digit:]]+") | sed 's/"//g' )'
我将整个 json 文件存储在 $value 变量中,并且 echo "$value" 返回了 json 文件的内容,但不确定为什么它在 jenkins 中不起作用。
我在 jq 在线工具中使用了相同的命令,但它按预期工作。
https://jqplay.org/s/7lBj_kDoB3
我用的是jq-1.6版本。
有人可以帮我解决这个问题吗?
【问题讨论】:
-
用单引号将jq脚本括起来,这似乎与jq无关
-
我做到了,但没有运气
-
请注意,您的问题中的代码和错误消息中的代码彼此不同步,因为您编辑了前者而不是后者。请收集新的错误消息(不要只是编辑错误消息以匹配,而是在修复运行时存在的代码并复制并粘贴产生的新/不同消息后实际上再次发生错误)。跨度>