Variable-Substitution
從/到文件的變數替換
如何用另一個文件中的變數替換文件中的佔位符?(就像 docker-compose 正在做的那樣。)
我發現很多關於單變數替換或環境變數替換的文章,但不是文件到文件。
.env 文件
name=John time='10:00'
內容文件
Hello "${name}"! I wait for u since ${time}.
輸出文件:
Hello "John"! I wait for u since 10:00.
編輯:請注意,我也想保留
"
在文件中。Edit2:我最終使用了@steeldriver 的解決方案。這是我現在在我的腳本中使用的:
# Make copy of the template folder (containing scripts and `.env` file) cp -r templates .templates # Replace environment variables in all files of the folder set -a for file in $(find .templates -type f) do . ./.env && envsubst < $file > $file.tmp && mv $file.tmp $file done set +a # create output directory mkdir -p $HOME/output/ # copy if new or modified rsync -raz .templates/. $HOME/output/ # remove temp folder rm -r .templates
使用
envsubst
set -a . ./.env && envsubst < content set +a
set -a
/set +a
打開/關閉創建/修改變數的自動導出。
在用它們的實際值替換文件中的環境變數中找到了一個可行的解決方案?
(. .env && eval "echo \"$(cat config.xml)\"")
編輯:此解決方案還刪除
"
了文件中的標記。那不是我想要的。