しばらく以下のコードを使用してきましたが、今はエラーが発生しています。
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
diff
0
ファイルに違いがない場合、成功()が返されます。必要に応じてロジックを調整します。
可能であれば、コマンドの終了状態をテストすることは、コマンド置換を介して出力を検査または解析するよりも、常に常に望ましいです。
"$diffCurr"
完全性を期すために、元の例はその行に引用符がないため失敗しますif
。したがって、「単語の分離」を複数の単語に進めるので、「引数が多すぎます」。