2011-03-24 242 views

回答

1

系统的返回值()是程序(here)的退出状态。改为使用反向操作:

$process = `...`; 
+0

好吧这看起来就像$ process得到egrep adb的结果,而不考虑awk – Koby 2011-03-24 07:45:14

+0

所以当调用我的$ process ='adb shell ps | egrep adb | awk'{print \ $ 1}'我得到了我需要的东西,谢谢 – Koby 2011-03-24 07:48:19

1

我不认为perl的捕获输出时你使用system()调用。

尝试在反引号包裹它,而不是:

my $process = `adb shell ps | egrep adb | awk '{print $1}'`; 
+0

我有$工艺= -1 – Koby 2011-03-24 07:35:10

+0

如果您在shell提示符下运行命令,这是什么给你? – 2011-03-24 07:36:08

+0

当我在我的ubuntu机器上运行它时,我得到了root – Koby 2011-03-24 07:39:41

0

我刚刚发现了关于SO本身的更详细的解释。编辑添加该链接 - What's the difference between Perl's backticks, system, and exec?


pmod提到的是正确的。因为我一直在做这一点最近阅读,只需添加评论什么,我发现:

system 

执行命令,并且命令完成后继续您的Perl脚本。它返回命令的退出状态。

backticks - ` ` 

这就像是系统,执行你启动的命令并等待它返回。但是,与系统不同,该命令返回STDOUT。我认为这是你在这里寻找的东西。

exec 

用新进程替换当前并且不返回任何内容。

希望帮助...

+0

感谢您的信息 – Koby 2011-03-24 13:24:32