我有一个input.json类似于以下内容的json文件:
{
"variable" : "${ENV_VAR}"
}
当然,我可以像下面这样从bash调用envsubst:
$ export ENV_VAR=myvalue
$ envsubst < input.json > output.json
$ cat output.json
{
"variable" : "myvalue"
}
现在,我希望可以在ENV_VAR未设置的情况下为input.json中的变量设置默认值,就像下面的示例一样,不幸的是,在下面的示例中该示例无法正常工作:
$ cat input.json
{
"variable" : "${ENV_VAR:=defaultvalue}"
}
$ export ENV_VAR=newvalue
$ envsubst < input.json > output.json
$ cat output.json
{
"variable" : "${ENV_VAR:=defaultvalue}"
}
$ unset ENV_VAR
$ envsubst < input.json > output.json
$ cat output.json
{
"variable" : "${ENV_VAR:=defaultvalue}"
}
很好奇的是,如果我像下面的示例一样执行envsubst(不涉及输入文件),则可以正常工作
$ export ENV_VAR=myvalue
$ echo "value is ${ENV_VAR:=defaultvalue}" | envsubst
value is myvalue
$ unset ENV_VAR
$ echo "value is ${ENV_VAR:=defaultvalue}" | envsubst
value is defaultvalue
文件哪里出问题了?