Bash 将cat内容回显到文件中
我有一个文件“setting.xml”,其中包含一些环境变量Bash 将cat内容回显到文件中,bash,environment-variables,echo,cat,Bash,Environment Variables,Echo,Cat,我有一个文件“setting.xml”,其中包含一些环境变量 <localRepository>/Users/$(whoami)/.m2/repository 但不确定如何将内容传递给echo命令 cat setting.xml > production.xml && sed -i "s/::whoami/$(whoami)/g" production.xm 只需使用> 最好在文件中使用::whoami,而不是$(whoami) 模板: <local
<localRepository>/Users/$(whoami)/.m2/repository
但不确定如何将内容传递给echo命令
cat setting.xml > production.xml && sed -i "s/::whoami/$(whoami)/g" production.xm
只需使用>
最好在文件中使用::whoami
,而不是$(whoami)
模板:
<localRepository>/Users/::whoami/.m2/repository
/Users/::whoami/.m2/存储库
您可以尝试:
sed "s/\$(whoami)/$(whoami)/" < setting.xml >production.xml
sed“s/\$(whoami)/$(whoami)/”production.xml
sed
是一个流编辑器,在上面,用命令whoami的结果替换文本$(whoami)
,通用方法是:
eval echo `cat setting.xml | sed -r 's/([<>])/\\\\\1/g'` > production.xml
eval echo`cat setting.xml;sed-r的/([])/\1/g`>production.xml
它可能需要转义更多的字符,而不仅仅是
但是要小心@jm666之类的安全问题。要替换环境变量,可以使用
envsubt
。整个命令将是:
envsubst < setting.xml > production.xml
您可以查看以了解更多信息。也许您可以在这里使用更通用的方法,并用所有的
$(..)
替换它们的扩展?@TomFenech可能,但这对我来说太危险了,比如$(rm-rf/)
:)用sed编辑XML,这是完全错误的……)谢谢,我如何替换多个环境变量?像$(whoami)
和$some\u path
?
envsubst < setting.xml > production.xml
apt-get install gettext-base