当前时区为 UTC + 8 小时



发表新帖 回复这个主题  [ 6 篇帖子 ] 
作者 内容
1 楼 
 文章标题 : [问题]如何把调用程序的输出赋给一个变量
帖子发表于 : 2008-01-25 20:23 

注册: 2005-12-09 16:22
帖子: 30
送出感谢: 0 次
接收感谢: 0 次
请教一下高手:

有假如有100个C语言写的test.c程序, 编译存在于目录../versions/v1/test.exe到/versions/v101/test.exe ,
每个程序里有 fprintf(stdout, "%d\n", test()); 输出一个结果.
每个程序需要运行两次, 用不同的输入, 然后分别比较每个版本两次的输出结果是否相同.

我现在的做法如下:

代码:
for((i=1; i<=100; i++))
do
echo "<<<<<Teting the version v$i"

../versions/v$i/test.exe a
../versions/v$i/test.exe b

echo
done


保存到test.sh里, 用 test.sh > result
但这样要自己用眼睛看每个版本的两次结果是否相同, 能不能把../versions/v$i/test.exe a得到的结果存为一个变量,../versions/v$i/test.exe b结果存为另一个变量, 然后直接比较这两个变量值, 相同就路过, 只输出不同结果的版本号?

多谢各位.


_________________
java程序员 linux菜鸟 C++初学者
http://ke-cai.net


最后由 caike 编辑于 2008-01-25 20:51,总共编辑了 1 次

页首
 用户资料  
 
2 楼 
 文章标题 :
帖子发表于 : 2008-01-25 20:45 
头像

注册: 2006-07-02 11:16
帖子: 12522
地址: 廣州
送出感谢: 0 次
接收感谢: 8
评测机?..

代码:
for((i=1; i<=100; i++))
do
echo "<<<<<Teting the version v$i"
diff <(../versions/v$i/test.exe a) <(../versions/v$i/test.exe b) >/dev/null || echo "Output is different when testing the version v$i"
done


_________________
^_^ ~~~
要理解递归,首先要理解递归。

地球人都知道,理论上,理论跟实际是没有差别的,但实际上,理论跟实际的差别是相当大滴。


最后由 BigSnake.NET 编辑于 2008-01-25 21:00,总共编辑了 1 次

页首
 用户资料  
 
3 楼 
 文章标题 :
帖子发表于 : 2008-01-25 20:55 
头像

注册: 2007-01-15 17:15
帖子: 3766
送出感谢: 0 次
接收感谢: 0 次
bravo , 球猫 :)


页首
 用户资料  
 
4 楼 
 文章标题 :
帖子发表于 : 2008-01-25 21:00 

注册: 2005-12-09 16:22
帖子: 30
送出感谢: 0 次
接收感谢: 0 次
多谢楼上的指导, 试了一下, 结果我的cygwin没装diff, 明天再试.


_________________
java程序员 linux菜鸟 C++初学者
http://ke-cai.net


页首
 用户资料  
 
5 楼 
 文章标题 :
帖子发表于 : 2008-01-26 11:51 

注册: 2005-12-09 16:22
帖子: 30
送出感谢: 0 次
接收感谢: 0 次
代码:
for((i=1; i<=100; i++))
do
echo "<<<<<Teting the version v$i"
../versions/v$i/test.exe a > temp1
 ../versions/v$i/test.exe b>temp2

diff temp1 temp2 >/dev/null || echo "Output is different when testing the version v$i"
done

果然搞定, 能不能解释一下:
diff temp1 temp2 >/dev/null || echo "Output is different when testing the version v$i"
重定向到>/dev/null是哪里? 后面的 echo "Output is different when testing the version v$i"只有当diff结果不同的时候才能输出吗?

再问一个比较低级的问题, 我还想在结果不同的时候顺便把这两个结果, temp1, temp2也输出来. 我怎么echo他们都不出来:(
代码:
diff temp1 temp2 >/dev/null || echo "Output is different when testing the version v$i $temp1 $temp2"

代码:
diff temp1 temp2 >/dev/null || echo "Output is different when testing the version v$i"||echo temp1||echo temp2

也不干活

:(


页首
 用户资料  
 
6 楼 
 文章标题 :
帖子发表于 : 2008-01-26 12:21 
头像

注册: 2006-07-02 11:16
帖子: 12522
地址: 廣州
送出感谢: 0 次
接收感谢: 8
caike 写道:
代码:
for((i=1; i<=100; i++))
do
echo "<<<<<Teting the version v$i"
../versions/v$i/test.exe a > temp1
 ../versions/v$i/test.exe b>temp2

diff temp1 temp2 >/dev/null || echo "Output is different when testing the version v$i"
done

果然搞定, 能不能解释一下:
diff temp1 temp2 >/dev/null || echo "Output is different when testing the version v$i"
重定向到>/dev/null是哪里? 后面的 echo "Output is different when testing the version v$i"只有当diff结果不同的时候才能输出吗?

再问一个比较低级的问题, 我还想在结果不同的时候顺便把这两个结果, temp1, temp2也输出来. 我怎么echo他们都不出来:(
代码:
diff temp1 temp2 >/dev/null || echo "Output is different when testing the version v$i $temp1 $temp2"

代码:
diff temp1 temp2 >/dev/null || echo "Output is different when testing the version v$i"||echo temp1||echo temp2

也不干活

:(


去掉 >/dev/null 就可以


_________________
^_^ ~~~
要理解递归,首先要理解递归。

地球人都知道,理论上,理论跟实际是没有差别的,但实际上,理论跟实际的差别是相当大滴。


页首
 用户资料  
 
显示帖子 :  排序  
发表新帖 回复这个主题  [ 6 篇帖子 ] 

当前时区为 UTC + 8 小时


在线用户

正在浏览此版面的用户:没有注册用户 和 3 位游客


不能 在这个版面发表主题
不能 在这个版面回复主题
不能 在这个版面编辑帖子
不能 在这个版面删除帖子
不能 在这个版面提交附件

前往 :  
本站点为公益性站点,用于推广开源自由软件,由 DiaHosting VPSBudgetVM VPS 提供服务。
我们认为:软件应可免费取得,软件工具在各种语言环境下皆可使用,且不会有任何功能上的差异;
人们应有定制和修改软件的自由,且方式不受限制,只要他们自认为合适。

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
简体中文语系由 王笑宇 翻译