用Shell脚本替换String

时间:2016-05-08 09:54:43

标签: shell

我正在尝试从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 ##### 

2 个答案:

答案 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
}