1. ホーム
  2. bash

[解決済み] bashでのDiffコマンド

2022-03-02 19:47:41

質問

以下のbashコマンドを実行するたびに、エラーが発生します。

以下はそのコードです。

sort -b ./tests/out/$scenario > $studentFile
sort -b ./tests/out/$scenario > $profFile
$(diff $studentFile $profFile)
  if [ $? -eq 0 ]
      then 
          echo "Files are equal!"
      else
          echo "Files are different!"
      fi

以下はそのエラーです。

./test.sh: 2c2: not found

私は基本的に2つのファイルをソートし、それらが等しいかどうかをチェックしたいのです。このエラーが何を意味するのか、そしてどうすればこのエラーを取り除くことができるのか、理解できません。どんな助けでも非常に感謝されます。

ありがとうございます。

解決方法は?

簡単な答え:使用する

diff $studentFile $profFile

の代わりに

$(diff $studentFile $profFile)

長い回答です。

diff $studentFile $profFile 

は数行の出力を提供し、最初の行は、あなたの例では、"2c2"です。diff コマンドを $() で囲むと、この式の結果は、すべての行を連結した文字列、 "2c2 ..." になります。スクリプトでは、この結果をbashが新しいコマンドとして実行し、"command not found: 2c2"という結果を返します。

例によって比較してみましょう。

$(diff $studentFile $profFile)

とします。

echo $(diff $studentFile $profFile)

*** 追記 ***

if diff $studentFile $profFile > /dev/null 2>&1
then
  echo "equal files"
else
  echo "different files"
fi

は、期待される結果に到達するための可能な方法です。