首页 > 解决方案 > 是否有相当于 Linux 的“sdiff -s”命令的批处理?

问题描述

我正在上的计算机科学课使用 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

任何建议表示赞赏!

标签: batch-file

解决方案


推荐阅读