无聊乱搞:用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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值