+ -
当前位置:首页 → 问答吧 → Perl 显示 Shell调用的打印信息,能不能实时显示

Perl 显示 Shell调用的打印信息,能不能实时显示

时间:2010-09-02

来源:互联网

我要做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的的输出信息

作者: net_robber   发布时间: 2010-09-02

个人觉得有两种办法:
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
复制代码

作者: cduedu   发布时间: 2010-09-02

只是要实时的看到执行的输出,为什么不用 system 呢,

作者: socyno   发布时间: 2010-09-02

回复 socyno


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

作者: cduedu   发布时间: 2010-09-02

多谢两位

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

作者: net_robber   发布时间: 2010-09-02