【发布时间】:2013-05-30 08:26:03
【问题描述】:
我希望向 Android 设备发送一个 adb shell 命令,该设备将输出从 1 个命令传递到另一个命令,但是当我尝试这样做时,只有第一个命令在设备上执行,第二个命令在主机。这是我尝试过的:
adb shell command1 | command2
command1 在设备上执行,command2 在主机上执行。
我怎样才能让它正常工作?
谢谢!
【问题讨论】:
我希望向 Android 设备发送一个 adb shell 命令,该设备将输出从 1 个命令传递到另一个命令,但是当我尝试这样做时,只有第一个命令在设备上执行,第二个命令在主机。这是我尝试过的:
adb shell command1 | command2
command1 在设备上执行,command2 在主机上执行。
我怎样才能让它正常工作?
谢谢!
【问题讨论】:
一种方法是创建一个包含所需命令的 shell 脚本,然后运行该 shell 脚本。
由于 Android 根文件系统在运行时不可写入(通常,除非您已将设备植根并重新挂载它),您可以将文件复制到可移动(或模拟)存储,例如 /sdcard。
然后使用命令adb shell sh /sdcard/your-script-name 运行脚本。因为每个脚本都在自己的子 shell 中运行,所以您的两个命令都将在设备上的同一个 shell 中执行(您可以通过 ps 确认)。
【讨论】:
你可以这样使用:
adb shell "command1 | command2"
【讨论】:
adb shell "command1 && command2"
示例:
递归列出 /system/lib 下所有包含 'foo' 的文件:
adb shell "cd /system/lib&&ls -lR .|grep -i foo"
重要的是双引号和双与号。
唯一的问题是您也不能将它用于输入,这意味着运行需要使用单行标准输入的可执行文件将无法正常工作,因为它需要用户干预。
【讨论】: