1

我正在使用 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 ?

4

1 回答 1

3

当 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
于 2021-06-28T07:00:55.210 回答