我需要制作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
跳过检查丢失文件,空白安全等,您可能需要以下内容:
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
,毕竟这是一种完全这种工作的工具。