0
我有这个bash代码替换模板文本文件中的某些变量并将结果写入某处。这工作:使用sudo shell envsubst命令中的导出变量的正确引号
#!/usr/bin/env bash
PROJECTFOLDER=$1
USER=$2
export PROJECTFOLDER USER
CONFIGVARS='$PROJECTFOLDER:$USER'
envsubst "$CONFIGVARS" <template.conf> /home/me/config.inc.php
和template.conf像这样:
./script foo bar
这给:
<h1>foo</h1>
<h2>bar</h2>
但是如果我想
<h1>${USER}</h1>
<h2>${PROJECTFOLDER}</h2>
调用时使用使用sudo或root i将输出保存到文件夹t不起作用,as seen here。
我应该做的是在sudo shell中运行命令(我不想使用tee或dd方法来保持它简单)。
sudo sh -c 'envsubst "$CONFIGVARS" <template.conf> /etc/config.inc.php'
但无论行情ANDS括号我尝试的组合,它提供了两种
<h1>${USER}</h1>
<h2>${PROJECTFOLDER}</h2>
空:
<h1></h1>
<h2></h2>
解决方案 感谢l0b0:
envsubst "$CONFIGVARS" < template.conf | sudo tee /etc/config.inc.php
变量不会导出到'sudo'。 – choroba