我是搞信息学竞赛的,刚刚把编程环境从win改到ubuntu下,在win下我们编完程序后就运行下面这个.bat来测试我的算法是否正确(比如一个程序名为fruit,测试文件下有fruit1.in,fruit2.in...fruit10.in,10个输入数据,还有对应的fruit1.ans,fruit2.ans....fruit10.ans,10个正确的输出数据,我把我的编译好的程序fruit.exe(input:fruit.in, output:fruit.out)放进来,运行下面这个fruit.bat,就可以看到自己过了几组数据,运行时间是什么),我还不太熟悉shell,现在想在linux下实现同样的功能,请求各位帮个忙编个具有同样功能的shell脚本,本人感激不尽!
批处理:fruit.bat,下面是代码:
@echo off
if "%1"=="" goto loop
copy fruit%1.in fruit.in >nul
echo Problem Test
echo Data %1
time<enter
fruit.exe
time<enter
fc fruit.out fruit%1.ans
pause
goto end
:loop
for %%i in (1 2 3 4 5 6 7 8 9 10) do call %0 %%i
:end
del fruit.in
del fruit.out
求助!帮忙把一个win下的.bat翻译成shell脚本
-
- 帖子: 2
- 注册时间: 2010-01-15 14:08
-
- 帖子: 1028
- 注册时间: 2008-11-01 21:42
- 来自: 树下板凳
- yingfei
- 帖子: 273
- 注册时间: 2007-09-03 18:34
- 来自: 羊城通
Re: 求助!帮忙把一个win下的.bat翻译成shell脚本
代码: 全选
#!/bin/bash
if [ x"$1" != "x" ]; then
cp fruit$1.in fruit.in
echo "Problem Test"
echo "Data $1"
date "+%F %T.%N"
time ./fruit.exe
date "+%F %T.%N"
diff -y -W 80 --suppress-common-lines fruit.out fruit$1.ans
read -n 1 tmp
else
for i in `seq 1 10`; do $0 $i; done
fi
rm fruit.in
rm fruit.out
- Ubuntu 10.10 ~
-
- 帖子: 82
- 注册时间: 2008-03-06 4:56
Re: 求助!帮忙把一个win下的.bat翻译成shell脚本
#!/bin/bash
for((i=1;i<=10;i++)); do
cp fruit$i.in fruit.in
echo Problem Test
echo Data $i
time ./fruit
diff --strip-trailing-cr fruit.out fruit$i.ans && echo Correct
read
done
rm fruit.in fruit.out
以前写过一个超过千行的脚本专门测这种东西。。支持自动找代码编译,在命令行直接输入数据等功能,可以卡时间卡内存卡输出大小判断运行时错误并返回结果,其他功能忘了
我写单点测,另外一个人写全测但是感觉写得不怎么样(没利用到我的单点测的所有功能,所以整个程序虽然发布了但是估计那东西至今只有我一个人会用)
后来那人不管了我也懒得继续写下去了
for((i=1;i<=10;i++)); do
cp fruit$i.in fruit.in
echo Problem Test
echo Data $i
time ./fruit
diff --strip-trailing-cr fruit.out fruit$i.ans && echo Correct
read
done
rm fruit.in fruit.out
以前写过一个超过千行的脚本专门测这种东西。。支持自动找代码编译,在命令行直接输入数据等功能,可以卡时间卡内存卡输出大小判断运行时错误并返回结果,其他功能忘了
我写单点测,另外一个人写全测但是感觉写得不怎么样(没利用到我的单点测的所有功能,所以整个程序虽然发布了但是估计那东西至今只有我一个人会用)
后来那人不管了我也懒得继续写下去了