作为一个Linux渣渣,写出来这一个小脚本真是各种艰难,自己乱搞乱实验加网上各种查了解到了一些小语法以及一些命令的用法。最终还是实现了“截肢”版的cena。收获还是颇多的,主要是那一堆shell脚本的小语法细节。这个脚本的用法很简单,只要在当前文件夹里创建好data文件夹和src文件夹,直接运行即可,在result文件里查看结果。
不过实现的仅仅是“截肢”版,而且有一些评测误差,反馈的程序运行结果也不是很完善(只有A,T,W),今后有时间会不断改进,并且让程序输出不断完善。当然欢迎路过的大牛帮忙改进。
#get list#
ls ./src/ > src.list.tmp
ls ./data/ > ls.tmp
sort ls.tmp > data.list.tmp
rm ls.tmp
#get list#
while read src
do
echo -----$src----- >> result
while read file
do
echo -n $file: >> result
g++ ./src/$src/$file.cpp -o ./exe
ls ./data/$file/ > ls.tmp
sort ls.tmp > test.list.tmp
while read datain
do
read dataout
cp ./data/$file/$datain ./$file.in
sh /home/sky/tmp/run_exe.sh
read tle < tle.tmp
diff -q -w ./data/$file/$dataout ./$file.out >> cmp.tmp 2>&1
test -s cmp.tmp
wa=$?
rm -f cmp.tmp tle.tmp $file.in $file.out
if [ $tle -eq 137 ]
then echo -n T >> result
elif [ $wa -eq 0 ]
then echo -n W >> result
else echo -n A >> result
fi
done < test.list.tmp
rm exe ls.tmp test.list.tmp
echo >> result
done < data.list.tmp
done < src.list.tmp
rm *.list.tmp
ulimit -t 1
./exe
echo $? > tle.tmp
ulimit 的时间限制只能从大往小改,所以只能再开一个脚本来运行
sort
test
[ ]
echo -n
while read do done < filename