2013-06-04 178 views
3

我希望發送一個adb外殼命令到管道輸出從1命令到其他命令的Android設備,但是當我嘗試這樣做時,只有第一命令在設備上執行,第二個命令在主機上執行。以下是我試過的:從1命令管道輸出到其他命令在adb外殼命令行

adb shell command1 | command2 

command1在設備上執行,command2在主機上執行。

我怎樣才能讓它正常工作?

謝謝!

回答

4

你可以使用這樣的事情:

adb shell "command1 | command2" 
+0

我會嘗試。如果command1包含自己的引號會怎麼樣?例如,回聲「123」?它會拋出adb? – user1118764

+1

您將需要轉義那些或使用單引號和雙引號的組合 –

0

一種方法是創建一個包含所需命令的shell腳本,然後運行shell腳本。由於Android根文件系統在運行時不可寫(通常,除非您已將設備植根並重新裝入它),您可以將該文件複製到可移動(或模擬)存儲設備,例如/sdcard

然後使用命令adb shell sh /sdcard/your-script-name運行腳本。因爲每個腳本在自己的子shell中運行,無論你的命令將在設備上的同一個shell執行(你可以用ps確認)。

+0

這是我最初的想法,但我認爲可能有解決方法。 – user1118764

0
adb shell "command1 && command2" 

例如:

adb shell "cd /system/lib&&ls -lR .|grep -i foo" 

包含 '富' 在/系統/ lib目錄中的所有文件的遞歸上市重要的是雙引號和雙和號。

的唯一的事情是,你不能用它來輸入,以及,這意味着運行需要使用標準輸入一個班輪,因爲它需要用戶干預是行不通的可執行文件。