diffとcommは、2つのenvファイルの間に違いがないことを発見しました。

diffとcommは、2つのenvファイルの間に違いがないことを発見しました。

この環境ファイルがあります

  • 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必要なため、環境ファイルのソーシングは期待どおりに機能しません。exportenv

環境ファイルを次のように変更します。

./1.env
export BARF_BAG=1
./2.env
export BARF_BAG=2

これでenv正しく入力し、比較結果を予想以上に出力する必要があります。

関連情報