あるコマンドの出力を別のコマンドにパイプする Android デバイスに adb シェル コマンドを送信したいのですが、それを実行しようとすると、デバイスでは最初のコマンドのみが実行され、ホスト マシンでは 2 番目のコマンドが実行されます。 . これが私が試したことです:
adb shell command1 | command2
command1 はデバイスで実行され、command2 はホスト マシンで実行されます。
これを正しく機能させるにはどうすればよいですか?
ありがとう!
次のようなものを使用できます。
adb shell "command1 | command2"
1 つの方法は、必要なコマンドを含むシェル スクリプトを作成し、シェル スクリプトを実行することです。
Android ルート ファイルシステムは実行時に書き込み可能ではないため (通常、デバイスをルート化して再マウントしない限り)、ファイルを取り外し可能な (またはエミュレートされた) ストレージにコピーできます (例: /sdcard.
次に、コマンドを使用してスクリプトを実行しますadb shell sh /sdcard/your-script-name。各スクリプトは独自のサブシェルで実行されるため、両方のコマンドがデバイスの同じシェルで実行されます (これは で確認できますps)。
adb shell "command1 && command2"
例:
「foo」を含む /system/lib の下のすべてのファイルの再帰的なリスト:
adb shell "cd /system/lib&&ls -lR .|grep -i foo"
重要なのは、二重引用符と二重アンパサンドです。
唯一のことは、入力にも使用できないことです。つまり、ワンライナーを使用して標準入力を必要とする実行可能ファイルを実行すると、ユーザーの介入が必要になるため機能しません。