我正在尝试编写一个循环,但这不起作用:
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 显示输出不同(很奇怪,我看到所需错误行的输出,因为它被打印到 stdout,而不是被 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 包含程序必须为这些参数打印的错误消息。