我有一组* .in文件和一组带有匹配文件名的* .soln文件。我想用* .in文件作为输入运行我的程序,并将输出与* .soln文件中的输出进行比较。最好的方法是什么?我可以想到3个选项。
答案 0 :(得分:0)
如果程序存在,我怀疑bash脚本是最好的选择。 如果您的soln文件命名正确,那么某种循环就像
用于base * .soln中的文件 做 myprogram> new_ $文件 diff $ file new_ $ file 完成
当然,您可以查看diff和的退出代码 做各种其他事情来创建测试报告。 。
对我来说这看起来最简单。 。
卡尔
答案 1 :(得分:0)
这主要是一个需要使用具有最小逻辑的文件系统的问题。对于这些问题,Bash不是一个糟糕的选择。如果事实证明你想做一些比仅仅比较相等更复杂的事情,那么Python就变成了一个更有吸引力的选择。对于诸如此类的一次性脚本,Java似乎不是一个好的选择。
基本的bash实现可能如下所示:
cd dir_with_files
program=your_program
input_ext=".in"
compare_to_ext=".soIn"
for file in *$from_extension; do
diff <("$program" "$i") "${file:0:$((${#file}-3))}$compare_to_ext"
done
未测试。
答案 2 :(得分:0)
我会选择bash解决方案。另外,假设你正在做的是测试,我总是保存myprogram
的输出,这样如果有失败,你总是有输出来比较它。
#!/bin/bash
for infile in *.in; do
basename=${infile%.*}
myprogram $infile > $basename.output
diff $basename.output $basename.soln
done
根据报告的要求添加检查或退出状态等。