免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 4002 | 回复: 5

Perl 显示 Shell调用的打印信息,能不能实时显示 [复制链接]

论坛徽章:
0
发表于 2010-09-02 10:38 |显示全部楼层
我要做Daily Build工具

由于字符串较多,所以选择了Perl


Build过程中需要大量使用svn、gcc、make、zip和其他shell脚本

我当前使用类似下面的方式
  1. $cmd="cd XXX && ./configure -DYYY && make clean all";
  2. print `$cmd 2>&1`;if($?!='0'){print "[Error:$?]$cmd\n";exit $?;}
  3. $cmd="/path/tools.sh"
  4. print `$cmd 2>&1`;if($?!='0'){print "[Error:$?]$cmd\n";exit $?;}
复制代码
由于`$cmd`时间比较长,并且输出较多,当前不能立刻看到编译过程中的提示信息(如:警告信息)


请问有没有其他思路可以实现实时打印shell的的输出信息

论坛徽章:
0
发表于 2010-09-02 11:34 |显示全部楼层
个人觉得有两种办法:
1. 让cmd在后台执行,把的cmd的输出到一个文件,然后再去tail它,这个好像不是太好。
2.第二个就是把让cmd的输出输出到当前的显示设备:
  1. topaz$who am i
  2. hpcyuhua pts/3        2010-09-02 11:28 (222.177.19.233)
复制代码
当前的显示设备是pts/3,我测试的语句是
  1. $cmd="echo 1 >/dev/pts/3; sleep 6; echo 2 >/dev/pts/3; sleep 6; echo 3 >/dev/pts/3";
  2. `$cmd`;
  3. topaz$perl cmd.pl
  4. 1
  5. 2
  6. 3
复制代码

论坛徽章:
0
发表于 2010-09-02 13:16 |显示全部楼层
只是要实时的看到执行的输出,为什么不用 system 呢,

论坛徽章:
0
发表于 2010-09-02 13:45 |显示全部楼层
回复 3# socyno


    恩,开始还以为system和``的效果一样就没试。试了一下system可以实时得到输出结果。

论坛徽章:
0
发表于 2010-09-02 13:49 |显示全部楼层
多谢两位

2楼第二个方法和3楼的方法都可以,谢谢

论坛徽章:
0
发表于 2010-09-02 14:11 |显示全部楼层
open CMD, "cmd|";
print while <CMD>;
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

DTCC2020中国数据库技术大会 限时8.5折

【架构革新 高效可控】2020年8月17日~19日第十一届中国数据库技术大会将在北京隆重召开。

大会设置2大主会场,20+技术专场,将邀请超百位行业专家,重点围绕数据架构、AI与大数据、传统企业数据库实践和国产开源数据库等内容展开分享和探讨,为广大数据领域从业人士提供一场年度盛会和交流平台。

http://dtcc.it168.com


大会官网>>
  

北京盛拓优讯信息技术有限公司. 版权所有 16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122
中国互联网协会会员  联系我们:huangweiwei@it168.com
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP