ファイルから/への変数の置換

ファイルから/への変数の置換

ファイルのプレースホルダを他のファイルの変数に置き換えるには? (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

ベストアンサー1

使用envsubst

set -a
. ./.env && envsubst < content
set +a

set -aset +a/生成/変更された変数の自動エクスポートをオンまたはオフにします。

おすすめ記事