Can't run adb commands in bash script

20,183

Solution 1

Thanks everybody! I finally solved the problem. Here is the updated script:

    #!/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

The only problem was missing "./" before adb.

EDIT: also why not check to see if the server is running first?

Solution 2

adb shell opens a shell on your Android device. The subsequent commands are entered in the context of that shell. Add quotes around the remote commands:

adb shell "
am start -n com.android.settings/.TetherSettings
sleep 7
input tap 162 159
input tap 385 607
"
Share:
20,183
Vinit Shandilya
Author by

Vinit Shandilya

An electronics engineer at L. M. Ericsson. I love Java and assembly language programming. I have developed several open source EDA validation tools and data visualization programs. I'm fond of Android, though, I'm new in this arena. OS: Ubuntu 12.04 LTS/ Windows/ MAC OSX Scripting: Bash shell/ ADB Languages: Assembly (x86)/C/C++/Java Ask me about: Microprocessor and microcontroller based designs/ Open source hardware and software/Android programming/ System design and automation/ Cellular networks/ Network security

Updated on July 09, 2022

Comments

  • Vinit Shandilya
    Vinit Shandilya almost 2 years

    I'm trying to launch Android tethering settings from adb shell. The main purpose of doing so is to enable USB tethering mode by running a shell script. I'm using the following set of commands on my Ubuntu Terminal (12.04):

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

    This method works fine when the commands are executed one by one, but I'm not able to run them as normal shell script. Please help! Here is the complete script:

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

    I guess, it can't find the path to adb in my system. I've tried replacing the first line with the actual path to adb tool in SDK directory. That didn't work either. Any work around for this? (Sorry if the question seems silly. I'm really new to bash scripting!)

    EDIT: Updated script:-

    #!/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
    "