if [ -n $diffCurr ] エラー: パラメータが多すぎます。

if [ -n $diffCurr ] エラー: パラメータが多すぎます。

しばらく以下のコードを使用してきましたが、今はエラーが発生しています。

java Editor < "input/editor$i.in" > "tmp/editor$i.out"
diffCurr="$(diff "tmp/editor$i.out" "output/editor$i.out")"
if [ -n $diffCurr ]

エラー(上記のコードスニペットの最後の行で発生):

[: 引数が多すぎます。

何が問題なの? diff 結果が空であるか(つまり、ファイルの内容が同じか)テストしようとします。

ベストアンサー1

diffの終了状態によってファイルが異なるかどうかがわかるので、 の出力を変数に入れる必要はありませんdiff

if diff -q file1 file2 >/dev/null 2>&1; then
        # files are equal
else
        # files differ, or an error occurred
fi

diff0ファイルに違いがない場合、成功()が返されます。必要に応じてロジックを調整します。

可能であれば、コマンドの終了状態をテストすることは、コマンド置換を介して出力を検査または解析するよりも、常に常に望ましいです。

"$diffCurr"完全性を期すために、元の例はその行に引用符がないため失敗しますif。したがって、「単語の分離」を複数の単語に進めるので、「引数が多すぎます」。

おすすめ記事