我正在尝试从shell替换字符串。我已经读过字符串,它在模板变量中。现在我试图用{shell}中传递的参数替换companyId
变量中存储的REPLACE_COMPANY
。我从网上尝试了一些解决方案,但没有成功。此外,我想保持文件格式完整,因为替换我发现所有字符串都进入一行。任何人都可以提供帮助。
REPLACE_COMPANY="companyId"
echo "$template"
##### Company: companyId CONFIG START #####
backend FE:spaces-companyId
redirect scheme https if !{ ssl_fc }
balance roundrobin
server 1-www spacesIp:80 check cookie s2
backend BE:synapse-companyId
redirect scheme https if !{ ssl_fc }
balance roundrobin
server 1-www synapseIp:8008 check cookie s2
##### Company: companyId CONFIG END #####
答案 0 :(得分:0)
您可以使用envsubst
将文件中的变量引用替换为当前shell中可用的值。例如:
$ cat test.template
Hi $USER
$ envsubst < test.template
Hi username
答案 1 :(得分:0)
这是从我身边完成的。请在下面找到代码。感谢您的帮助。
注意: INF包含文件名,其中包含需要修改和回写的模板。和$ FILE包含最终输出需要写入的位置。
provision(){
INF="proxy.template"
REPLACE_COMPANY="companyId"
REPLACE_SPACEIP="spacesIp"
REPLACE_SYNAPSEIP="synapseIp"
sed -e "s/$REPLACE_COMPANY/$1/g" -e "s/$REPLACE_SPACEIP/$2/g" -e "s/$REPLACE_SYNAPSEIP/$3/g" $INF > $1
cat $1 >> $FILE
rm $1
}