无法在Bash脚本中运行adb命令。

4

我想从adb shell启动Android网络共享设置。这样做的主要目的是通过运行shell脚本启用USB网络共享模式。我正在Ubuntu终端(12.04)上使用以下一组命令:

adb shell
am start -n com.android.settings/.TetherSettings
sleep 7
input tap 162 159
input tap 385 607

这个方法在逐个执行命令时效果良好,但我无法像正常的shell脚本一样运行它们。请帮忙!以下是完整的脚本:

#!/bin/sh
adb shell
am start -n com.android.settings/.TetherSettings
sleep 7
input tap 162 159
input tap 385 607

我猜系统找不到adb路径。我尝试将第一行替换为SDK目录中adb工具的实际路径,但也没有用。是否有任何解决方法?(对不起,如果问题看起来很傻,我真的很新于bash脚本!)
编辑:更新的脚本如下:
#!/bin/sh
cd /home/evinish/Documents/Android/adt-bundle-linux-x86_64-20130219/sdk/platform-tools
adb shell "
am start -n com.android.settings/.TetherSettings
sleep 7
input tap 162 159
input tap 385 607
"

尝试将 #!/bin/sh 替换为 #!/usr/bin/env bash - Stephen Niedzielski
将pwd放在第一行。如果您不在与adb相同的目录中,请确保cd到正确的目录中。 - KDEx
谢谢Stephen,但问题仍然存在。根据KDEx的建议,我在我的脚本中包含了一个cd命令。但是,输出仍然显示“adb未找到”。 - Vinit Shandilya
2个回答

14

adb shell打开您的Android设备上的Shell。随后输入的命令在该Shell的上下文中执行。请在远程命令周围添加引号:

adb shell "
am start -n com.android.settings/.TetherSettings
sleep 7
input tap 162 159
input tap 385 607
"

我不明白为什么,因为我已经提供了adb的完整路径。请参考编辑部分。 - Vinit Shandilya
你的ADB命令前缺少了一个./。如果adb不在你的路径中,你必须从安装目录运行它。可以使用以下任一方式:cd /home/evinish/Documents/Android/adt-bundle-linux-x86_64-20130219/sdk/platform-tools && ./adb shell 或者 /home/evinish/Documents/Android/adt-bundle-linux-x86_64-20130219/sdk/platform-tools/adb shell - Stephen Niedzielski

2

谢谢大家!我终于解决了问题。这是更新后的脚本:

    #!/bin/sh
    cd /home/evinish/Documents/Android/adt-bundle-linux-x86_64-20130219/sdk/platform-tools
    ./adb start-server
    ./adb devices
    ./adb shell "
    am start -n com.android.settings/.TetherSettings
    sleep 15
    input tap 162 159
    input tap 385 607
    "
    sleep 10

唯一的问题是在adb之前缺少"./"。
编辑:还应该先检查服务器是否正在运行?

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接