この環境ファイルがあります
1.環境コンテンツ:
BARF_BAG=1
その後、他の環境ファイル:
2.環境コンテンツ:
BARF_BAG=2
違いを確認するために、ファイルに対してcommとdiffを実行しました。
#!/usr/bin/env bash
(
set -e;
first_env_file="$1"
second_env_file="$2"
if ! test -f "$first_env_file"; then
echo 'first arg must be an env file';
exit 1;
fi
if ! test -f "$second_env_file"; then
echo 'second arg must be an env file';
exit 1;
fi
echo -e '\n'
echo -e 'displaying results from diff tool:'
diff <(. "$first_env_file"; env | sort) <(. "$second_env_file"; env | sort) || true
echo -e '\n'
echo 'displaying results from comm tool:'
comm -3 <(. "$first_env_file"; env | sort ) <(. "$second_env_file"; env | sort) || true
echo 'finished diffing env files.'
)
私は何も得られません:
displaying results from diff tool:
displaying results from comm tool:
finished diffing env files.
何を提供しますか?
答え1
diff
ファイルを実行していないようですcomm
。コマンド出力を比較していますenv
。
比較を実行しているため、環境ファイルを表示するには変数がenv
必要なため、環境ファイルのソーシングは期待どおりに機能しません。export
env
環境ファイルを次のように変更します。
./1.env
export BARF_BAG=1
./2.env
export BARF_BAG=2
これでenv
正しく入力し、比較結果を予想以上に出力する必要があります。