我的文件「Setting.xml的」,其中包含了一些環境變量呼應貓內容到一個文件
<localRepository>/Users/$(whoami)/.m2/repository
我想寫Setting.xml的內容,存入production.xml並更換$(whomai )與我的userid
我試過下面
cat setting.xml | echo > production.xml
,但不知道我怎麼可以在內容傳遞給我的echo命令
我的文件「Setting.xml的」,其中包含了一些環境變量呼應貓內容到一個文件
<localRepository>/Users/$(whoami)/.m2/repository
我想寫Setting.xml的內容,存入production.xml並更換$(whomai )與我的userid
我試過下面
cat setting.xml | echo > production.xml
,但不知道我怎麼可以在內容傳遞給我的echo命令
你可以試試:
sed "s/\$(whoami)/$(whoami)/" <setting.xml>production.xml
的sed
是一個流編輯器,並在上面替換了t他的文字$(whoami)
與命令whoami
的結果。
cat setting.xml > production.xml && sed -i "s/::whoami/$(whoami)/g" production.xm
只是重新與>
cat
命令輸出最好是在你的文件中使用::whoami
代替$(whoami)
模板:
<localRepository>/Users/::whoami/.m2/repository
通用的做法是:
eval echo `cat setting.xml | sed -r 's/([<>])/\\\\\1/g'` > production.xml
可能需要轉義字符多於只是<
和>
但安全問題提防像@ jm666解釋
也許你能爲做這裏採用更通用的方法,並用所有'$(..)'來代替它們的擴展? –
@TomFenech也許,但它對我的口味太危險了,像' $(rm -rf /)':)用sed編輯XML,完全是錯誤的;;) –
jm666
是的,你可能是對的:) –