无聊乱搞:用shell脚本实现windows下cena的评测功能

作为一个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

你可能感兴趣的:(无聊乱搞:用shell脚本实现windows下cena的评测功能)