ループを書き込もうとしていますが、うまくいきません:
for t in `ls $TESTS_PATH1/cmd*.in` ; do
diff $t.out <($parser_test `cat $t`)
# Print result
if [[ $? -eq 0 ]] ; then
printf "$t ** TEST PASSED **"
else
printf "$t ** TEST FAILED **"
fi
done
これも役に立ちません:
$parser_test `cat $t` | $DIFF $t.out -
Diff は、出力が異なることを示しています (奇妙です。必要なエラー行の出力が標準出力に出力され、diff によってキャッチされないため) が、一時ファイルを使用して実行すると、すべて正常に動作します。
for t in `ls $TESTS_PATH1/cmd*.in` ; do
# Compare output with template
$parser_test `cat $t` 1> $TMP_FILE 2> $TMP_FILE
diff $TMP_FILE $t.out
# Print result
if [[ $? -eq 0 ]] ; then
printf "$t $CGREEN** TEST PASSED **$CBLACK"
else
printf "$t $CRED** TEST FAILED **$CBLACK"
fi
done
一時ファイルの使用は避けなければなりません。最初のループが機能しない理由とその修正方法 ありがとうございました。
PS ファイル *.in には、プログラムの誤ったコマンド ライン パラメータが含まれており、*.out には、プログラムがこれらのパラメータに対して出力する必要があるエラー メッセージが含まれています。