2016-04-26 7 views
-2

私はAndroidデバイス(adbシェル)にログインしてそこでいくつかのコマンドを実行するシェルスクリプトを作成しています。私のスクリプト(script1.sh)は次のようになります:アンドロイドデバイスにログインしてコマンドを実行する方法

# adb shell; cd sdcard; sh script2.sh & 

上記のコマンドは機能しません。 "adb shell"コマンドが実行されるとすぐにAndroidシェルに入り、残りの2つのコマンドは実行されません。私はアンドロイドの殻から出てくる「exit」と入力した場合、今残りのコマンドは、ホスト・シェルで実行されています

./script1.sh: line 119: cd: /sdcard/: No such file or directory 

答えて

0

私はあなたがheredochttps://en.wikipedia.org/wiki/Here_document#Unix_shells)を探していると思います。

例:

adb shell << ADB_SHELL 
cd /sdcard 
ls 
exit 
ADB_SHELL 

EDIT:あなたはおそらく、あなたのホストを害するadb shellコマンドが正常に働いていたことを確認し、あなたは、Androidデバイス上で実際にできることを実行する前に。それ以外の場合は、ホストマシン上のすべてを実行します。

+0

'script2.sh'の出力をファイルにリダイレクトする場合は、シェル配管:' sh sdcard2.sh> stdout.log'を使用してください。それはどのような出力ですか?ログ?後で処理したいデータはありますか? –

+0

ありがとうございます。申し訳ありませんが私の質問が変更されました。動作していますが、ホストスクリプト(script1.sh)が終了していません。私は私のホストスクリプト(script1.sh) adbのシェルで次のやっている << ADB_SHELL CD/SDカード のsh script2.sh& 終了 ADB_SHELL script2.shは、のAndriodデバイス上で無限ループで関数を実行しますか?どうやってアンドロイドデバイスでscript2.shを実行し続け、ホスト上でscript1.shを終了するのですか? –

+0

それは、adbリモートシェルを終了していないようです。 Ctrl-Cを押すと、「exit」コマンドが「heredoc」で動作しないのはなぜですか? –

0

/SDカード/

にセミコロン、例えばコピーdefalut.propを使用しないでください

〜/ADT-バンドルのlinux-x86_64-20140321/SDK /プラットフォーム・ツール/ adbのシェルCP default.prop/SDカード/

、あなたはこの

のように実行する必要がアンドロイドでスクリプトを実行する/システム/ bin/sh script.sh

関連する問題