免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3891 | 回复: 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>;
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

SACC2019中国系统架构师大会

【数字转型 架构演进】SACC2019中国系统架构师大会,8.5折限时优惠重磅来袭!
2019年10月31日~11月2日第11届中国系统架构师大会(SACC2019)将在北京隆重召开。四大主线并行的演讲模式,1个主会场、20个技术专场、超千人参与的会议规模,100+来自互联网、金融、制造业、电商等领域的嘉宾阵容,将为广大参会者提供一场最具价值的技术交流盛会。

限时8.5折扣期:2019年9月30日前


----------------------------------------

大会官网>>
  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP