2011-03-24 77 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