我需要制作shell脚本来检查我的算法是否有大量数据(测试保存在.in文件中的包,每个包都包含带有.in文件的文件夹,而另一个带有.out文件的文件夹,应该是正确的结果) 有时,一个包中大约有1000个文件,因此没有必要手动进行。我需要某种循环来打开此.in文件,然后重定向我的c ++程序的输入,还重定向该程序的输出(将结果保存到.out文件),但是要点是我无法尽快获得所需的这种语言。 我希望该脚本将我的算法结果与包中的.out文件进行比较
for f in ExternalIn/*.in; do//part of code which opens process with my algorithm and compare its .out file to .out file from package
答案 0 :(得分:1)
跳过检查丢失的文件,空白安全性等,您可能需要以下内容:
for f in ExternalIn/*.in; do
# diff the result of my_cpp_app eating file.in with file.out
# and store the comparison result in file.diff
diff ${f/.in/.out} <(my_cpp_app <$f 2>/dev/null) > ${f/.in/.diff}
done
尽管我可能会使用find
/ xargs
管道来做到这一点,这不仅更安全,而且允许并行执行。
甚至为此编写一个Makefile
并使用make
,毕竟这是用于完成此类工作的工具。