我有文件" setting.xml"其中包含一些环境变量
<localRepository>/Users/$(whoami)/.m2/repository
我想将setting.xml的内容写入production.xml并将$(whomai)替换为我的用户ID
我在下面试过
cat setting.xml | echo > production.xml
但不确定如何将内容传递给我的echo命令
答案 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