2つの.envファイルを比較した後、他のファイルに基づいてデフォルトファイルの値を上書きするスクリプト

2つの.envファイルを比較した後、他のファイルに基づいてデフォルトファイルの値を上書きするスクリプト

2つのenvファイルがあります。 1つはデフォルト値.env、もう1つはです.env.overwrite

実行してパラメータを指定するときは、次のスクリプトファイルが必要です。

./rebuild_env .env .env.overwrite

.envの各キー値をのキーで上書きします.env.overwrite。一部のキーが存在しない場合、.env.overwriteデフォルト値は保持されます。たとえば、

ファイルの場合.env

VALUE1=default_value1
VALUE2=default_value2
VALUE3=default_value3

そして.env.overwriteファイルから:

VALUE1=new_value1
VALUE3=new_value3

スクリプトを実行した後、.envファイルは次のようになります。

VALUE1=new_value1
VALUE2=default_value2
VALUE3=new_value3

私は今3日間インターネットで調査しようとしましたが、私のニーズに合ったものが見つかりませんでした。誰でも私を案内してもらえますか?あなたの助けに本当に感謝します。

ベストアンサー1

最も簡単な解決策は、2つのファイルをリンクすることです。

cat .env .env.overwrite > .env.new

これにより、最後に更新された項目がアクティブな項目になります。これで、すべての重複エントリを削除できます。

注文やその他のコメントが重要でない場合:

for variable in \
    $(cut -d= -f1 .env.overwrite .env | sort |uniq) ; 
do 
     grep ^${variable}= .env.overwrite || \
     grep ^${variable}= .env ; 
done

おすすめ記事