我有以下/etc/docker/daemon.json
文件:
$ yq . /etc/docker/daemon.json
{
"dns": [
"a.b.c.d1"
]
}
$
我尝试使用此命令将代理行附加到此文件yq
:
$ yq '. + { proxies : { "http-proxy":env($http_proxy) , "https-proxy":env($https_proxy) , "no-proxy":env($no_proxy)} }' /etc/docker/daemon.json
Error: 1:7: invalid input text "proxies : { \"ht..."
$
我也尝试了这个yq
命令:
$ yq '. + { .proxies = { .http-proxy=env($http_proxy) , .https-proxy=env($https_proxy) , .no-proxy=env($no_proxy)} }' /etc/docker/daemon.json
Error: !!str () cannot be added to a !!map ()
$
我期望这个 json:
{
"dns": [
"a.b.c.d1"
],
"proxies": {
"http-proxy": "http://x.y.z.t:8080",
"https-proxy": "http://x.y.z.t:8080",
"no-proxy": "localhost,127.0.0.1,localaddress,.localdomain.com"
}
}
我怎样才能做到这一点yq
?
显然,您使用的是mikefarah/yq,它要求将对象键括在引号中(例如,与kislyuk/yq
proxies:
不同),因此请将其更改为"proxies":
resolveError: 1:7: invalid input text "proxies: {\"ht..."
。此外,还env
要求其参数不带$
符号。因此,作为示例,这将起作用:或者,使用
.proxies =
第二次尝试的语法,它不需要引号,但作为表达式,它需要位于花括号之外:两个例子都产生结果(使用 mikefarah/yq v4.44.6 测试):
注意:如果您不想将环境变量解析为 YAML 节点,请
envstr
改用始终将值解析为字符串。