【问题标题】:Piping output from 1 command to other command in an adb shell command line在 adb shell 命令行中将输出从 1 个命令传递到其他命令
【发布时间】:2013-05-30 08:26:03
【问题描述】:

我希望向 Android 设备发送一个 adb shell 命令,该设备将输出从 1 个命令传递到另一个命令,但是当我尝试这样做时,只有第一个命令在设备上执行,第二个命令在主机。这是我尝试过的:

adb shell command1 | command2

command1 在设备上执行,command2 在主机上执行。

我怎样才能让它正常工作?

谢谢!

【问题讨论】:

    标签: android shell pipe adb


    【解决方案1】:

    一种方法是创建一个包含所需命令的 shell 脚本,然后运行该 shell 脚本。

    由于 Android 根文件系统在运行时不可写入(通常,除非您已将设备植根并重新挂载它),您可以将文件复制到可移动(或模拟)存储,例如 /sdcard

    然后使用命令adb shell sh /sdcard/your-script-name 运行脚本。因为每个脚本都在自己的子 shell 中运行,所以您的两个命令都将在设备上的同一个 shell 中执行(您可以通过 ps 确认)。

    【讨论】:

    • 这是我最初的想法,但我认为可能有办法绕过它。
    【解决方案2】:

    你可以这样使用:

    adb shell "command1 | command2"
    

    【讨论】:

    • 我会试试的。如果 command1 包含自己的引号怎么办?例如,回显“123”?它会抛弃 adb 吗?
    • 您需要转义这些或使用单引号和双引号的组合
    【解决方案3】:
    adb shell "command1 && command2"
    

    示例:

    递归列出 /system/lib 下所有包含 'foo' 的文件:

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

    重要的是双引号和双与号。

    唯一的问题是您也不能将它用于输入,这意味着运行需要使用单行标准输入的可执行文件将无法正常工作,因为它需要用户干预。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-10-24
      • 2014-12-05
      • 2015-02-11
      • 2023-04-02
      • 2011-09-13
      • 1970-01-01
      • 2022-12-13
      相关资源
      最近更新 更多