有没有办法防止envsubst替换$VARIABLE?例如,我希望是这样的:
export THIS=THAT
echo "dont substitute \\\$THIS" | envsubst然后把它还回去
dont substitute $THIS但我却得到了
dont substitute \THAT是否有转义字符来执行此操作?
发布于 2014-07-26 04:36:50
export DOLLAR='$'
export THIS=THAT
echo '${DOLLAR}THIS' | envsubst或者更清楚的是:
export THIS=THAT
echo '${DOLLAR}THIS' | DOLLAR='$' envsubst发布于 2019-03-21 15:39:21
我的解决方法如下:
原始模板:
$change_this
$dont_change_this编辑后的模板:
$change_this
§dont_change_this现在您可以处理以下内容:
envsubst < $template | sed -e 's/§/$/g'这取决于角色§不会出现在模板上的任何其他位置。您可以使用任何其他字符。
发布于 2020-04-17 04:51:53
$ echo $SHELL
/bin/bash
$ echo \$SHELL
$SHELL
$ echo \$SHELL | envsubst
/bin/bash
$ echo \$\${q}SHELL | envsubst
$SHELL因此,执行$$允许您添加一个$字符。然后,只需“替换”不存在的变量(这里我使用的是${q},但也可以是像${my_empty_variable}这样更有意义的变量,您将最终得到所需的变量。
就像段落解决方案一样-你需要一些特别的东西-在这里...一个不存在的变量,比起对模板执行额外的sed,我更喜欢它。
https://stackoverflow.com/questions/24963705
复制相似问题