将cat内容回显到文件中

时间:2014-11-14 11:00:22

标签: bash environment-variables echo cat

我有文件" setting.xml"其中包含一些环境变量

<localRepository>/Users/$(whoami)/.m2/repository

我想将setting.xml的内容写入production.xml并将$(whomai)替换为我的用户ID

我在下面试过

cat setting.xml | echo > production.xml

但不确定如何将内容传递给我的echo命令

4 个答案:

答案 0 :(得分:3)

您可以尝试:

sed "s/\$(whoami)/$(whoami)/" < setting.xml >production.xml

sed是一个流编辑器,在上面,使用命令$(whoami)的结果替换文字whoami

答案 1 :(得分:0)

通用方法是:

eval echo `cat setting.xml | sed -r 's/([<>])/\\\\\1/g'` > production.xml

可能需要转义的字符不仅仅是<>

但请注意@ jm666解释的安全问题

答案 2 :(得分:0)

要替换环境变量,可以使用envsubst。整个命令将是:

envsubst < setting.xml > production.xml

您可以在gettext软件包中找到此命令。如果您的系统尚未安装,而您正在使用Ubuntu,则输入:

apt-get install gettext-base

您可以选中envsubst manual了解更多信息。

答案 3 :(得分:-5)

cat setting.xml > production.xml && sed -i "s/::whoami/$(whoami)/g"  production.xm

只需使用cat重定向>命令输出 最好在您的文件中使用::whoami而不是$(whoami)

模板:

<localRepository>/Users/::whoami/.m2/repository