【发布时间】:2011-07-21 22:09:21
【问题描述】:
我正在尝试将这个系统调用的结果提交给$process
my $process= system "adb shell ps | egrep adb | awk '{print $1}' ";
但是当print " $process \n";我得到零时
任何建议
【问题讨论】:
标签: perl awk command system adb
我正在尝试将这个系统调用的结果提交给$process
my $process= system "adb shell ps | egrep adb | awk '{print $1}' ";
但是当print " $process \n";我得到零时
任何建议
【问题讨论】:
标签: perl awk command system adb
我认为 perl 在您使用 system() 调用时不会捕获输出。
尝试用反引号代替:
my $process = `adb shell ps | egrep adb | awk '{print $1}'`;
【讨论】:
adb shell ps | egrep adb | awk '{print \$2}'
system()的返回值是程序的退出状态(here)。改用反引号操作:
$process = `...`;
【讨论】:
adb shell ps | egrep adb | awk '{print \$1} 时,我已经得到了我需要的东西,谢谢
我刚刚找到了关于 SO 本身的更详细的解释。编辑以添加该链接 - What's the difference between Perl's backticks, system, and exec?
pmod 提到的是正确的。由于我最近一直在阅读这方面的内容,因此只需在我发现的内容中添加评论:
system
执行一个命令并且你的 perl 脚本在命令完成后继续。它返回命令的退出状态。
backticks - ` `
这有点像系统,执行您启动的命令并等待它返回。但是,与系统不同,它为命令返回 STDOUT。我想这就是你在这里寻找的东西。
exec
用新进程替换当前进程并且不返回任何内容。
希望对您有所帮助...
【讨论】: