我正在上的计算机科学课使用bash脚本对作业进行评分。但是,由于许多学生使用Windows,所以我试图编写一个等效的批处理文件,使他们可以在设备上运行以对实验室进行评分。
bash脚本的一个非常重要的部分是 “ sdiff -s key_ $ f out_ $ f >> details.txt”
它比较密钥文件和输出文件,并在详细信息文件中打印差异。
自从我使用批处理文件以来,我一直没有使用bash,并且已经有一段时间了,所以我很迷路。
Bash脚本:
echo ""
echo "Running Diff"
echo "--------"
rm turnin.txt
rm details.txt
for f in file*.txt;
do
f=${f#tests/}
cat out_$f >> turnin.txt
echo "out_$f">> details.txt
sdiff -s key_$f out_$f >> details.txt
if [ ${PIPESTATUS[0]} -eq 0 ];
then
echo "key_$f and out_$f are identical"
else
echo "key_$f and out_$f differ :: check details.txt for details"
fi
done
echo "--------"
文件相同时的details.txt示例:
out_file1.txt
out_file2.txt
out_file3.txt
out_file4.txt
out_file5.txt
文件的某些行不同时的details.txt示例:
out_file1.txt
isBalanced { ( [ ] } ) False | isBalanced { ( [ ] } ) True
isBalanced { { ( ) [ { } ] ( [ ] ) } } True | isBalanced { { ( ) [ { } ] ( [ ] ) } } False
out_file2.txt
out_file3.txt
out_file4.txt
40 2 4 + 2 2 + - * 4 5 / 6 / - | 402 4 + 2 2 + - * 4 5 / 6 / -
48 36 7 % + 2 - | 48 36 7 2 -
out_file5.txt
任何建议都值得赞赏!