使用 kislyuk/yq returns 语法错误,意外的 INVALID_CHARACTER 末尾附加 /0
Using kislyuk/yq returns syntax error, unexpected INVALID_CHARACTER with additional /0 at the end
我用的是kislyuk/yq - 比较常说的版本,是对jq的封装,用Python写的,使用PyYAML库进行YAML解析
版本为yq 2.12.2
我的jq是jq-1.6
我正在使用 ubuntu 和 bash 脚本进行解析。
我写成bash
alias=alias1
token=abc
yq -y -i ".tokens += { $alias: { value: $token }}" /root/.github.yml
我收到以下错误
jq: error: abc/0 is not defined at <top-level>, line 1:
.tokens += { alias1: { value: abc }}
我不明白。为什么最后会有一个/0?
问题是当双引号被 shell 扩展时,abc
没有被解释为 文字 字符串。底层 jq
包装器尝试将 abc
作为标准内置函数或用户定义函数进行匹配,但它无法解析,因此出现错误。
一个JSON字符串(jq
需要)类型需要用".."
引号来与JSON语法一致。一种方法是使用 --arg
支持通过命令行传递 arg
yq -y -i --arg t "$token" --arg a "$alias" '.tokens += { ($a): { value: $t } }' /root/.github.yml
或者像下面这样乱七八糟的引用,我根本不推荐
yq -y -i '.tokens += { "'"$alias"'": { value: "'"$token"'" }}' /root/.github.yml
我用的是kislyuk/yq - 比较常说的版本,是对jq的封装,用Python写的,使用PyYAML库进行YAML解析
版本为yq 2.12.2
我的jq是jq-1.6
我正在使用 ubuntu 和 bash 脚本进行解析。
我写成bash
alias=alias1
token=abc
yq -y -i ".tokens += { $alias: { value: $token }}" /root/.github.yml
我收到以下错误
jq: error: abc/0 is not defined at <top-level>, line 1:
.tokens += { alias1: { value: abc }}
我不明白。为什么最后会有一个/0?
问题是当双引号被 shell 扩展时,abc
没有被解释为 文字 字符串。底层 jq
包装器尝试将 abc
作为标准内置函数或用户定义函数进行匹配,但它无法解析,因此出现错误。
一个JSON字符串(jq
需要)类型需要用".."
引号来与JSON语法一致。一种方法是使用 --arg
支持通过命令行传递 arg
yq -y -i --arg t "$token" --arg a "$alias" '.tokens += { ($a): { value: $t } }' /root/.github.yml
或者像下面这样乱七八糟的引用,我根本不推荐
yq -y -i '.tokens += { "'"$alias"'": { value: "'"$token"'" }}' /root/.github.yml