web-dev-qa-db-ja.com

AndroidでBASHスクリプトを実行する方法は?

私と同じBASHスクリプトがFedora/CentOSで機能しています。

しかし、私は1つをテストしていますAndroid eee pad transformer。 enter image description here

ターミナルアクセスがあり、小さなテストスクリプトを作成しました。しかし、動作していません、どうすれば修正できますか?私は何を間違えていますか?

/data/data/berserker.Android.apps.sshdroid/home $ cat test.sh 
#!/bin/bash
var=`ifconfig -a`;
echo $var;

/data/data/berserker.Android.apps.sshdroid/home $ chmod +x test.sh 
/data/data/berserker.Android.apps.sshdroid/home $ ./test.sh 
sh: ./test.sh: not found
/data/data/berserker.Android.apps.sshdroid/home $ uname -a
Linux localhost 2.6.36.3-00004-g069b8b5 #1 SMP PREEMPT Wed May 11 22:14:22 CST 2011 armv7l GNU/Linux

/data/data/berserker.Android.apps.sshdroid/home $ bash ./test.sh 
sh: bash: Permission denied

/data/data/berserker.Android.apps.sshdroid/home $ ls -l /bin/bash
ls: /bin/bash: No such file or directory

/data/data/berserker.Android.apps.sshdroid/home $ find / -name "bash"
find: /config: Permission denied
lots more.......
find: /proc/595/task/598/fd: Permission denied
......
find: /data: Permission denied
find: /root: Permission denied

フォローアップ:

これは私のスクリプトです。

#!/bin/sh
echo "hello wassup, run me simply as './test.sh'";

or

#!/bin/bash
echo "hello wassup, run me using 'sh ./test.sh'";
18
YumYumYum

スクリプトを使用してインタープリターを呼び出すときに機能する可能性がありますか?

$ bash ./test.sh

#!/bin/bashが指定されているにもかかわらず、shによってエラーが投稿されたことを確認しました。間違っている可能性があります。

UPD

$ sh ./test.sh
11
ASten

in Android=シェルは_/system/bin/sh_ではなく、ほとんどのUnixライクシステムのような_/bin/sh_にあります。したがって、_#!/bin/bash_を_#!/bin/sh_それでも動作しません。_#!/system/bin/sh_を使用する必要があります。

AndroidはGNU/Linuxディストリビューションではないため、GNU/Linuxで実行されるすべてのスクリプトがAndroidでも動作することを期待することはできません。

22
tbg

ほとんどのAndroidデバイスにはbashインタープリターがインストールされていません。LinuxとAndroidでスクリプトを実行する必要がある場合は、 BusyBox を使用してみてください。デバイスをルート化する(そして潜在的に保証を無効にする)にもかかわらず、ifconfigユーティリティがBusyBoxに含まれているかどうかはわかりません。

Android SDKを使用して、あなたが達成しようとしていることをすべて行うアプリを作成することを強くお勧めします。

5
Wesley Wiser

述べたように、Android OS(4.0まで)にはBASHインタープリター(シェルのみ)は含まれません。BusyBoxは優れたツールですが、一般的なUNIXユーティリティの機能を縮小したバージョンのバージョンですが、実際にはBASHインタープリターは含まれていません。

Android BASHインタープリターのコンパイル済みバージョンについては、このフォーラムスレッドを参照してください: http://forum.xda-developers.com/showthread.php?t=537827 =

2
Namuna

Busybox をインストールできます。これにより、awk、fileなどの多くのユーティリティが提供されます... Terminal Emulator

  1. #!/system/bin/shを最初の行としてシェルファイルを作成します(Shebang)
  2. 完成したスクリプトを/system/xbinまたは/system/binの下に配置し、ターミナルエミュレーターから実行します

情報はこの記事からの抜粋です: シェルスクリプトを実行する方法Android DEVICES

1
Kenpachi