it-swarm.com.de

Wie führe ich das BASH-Skript in meinem Android aus?

Mein gleiches BASH-Skript arbeitet in Fedora/CentOS.

Aber ich teste einen Android eee pad transformer. enter image description here

Wo ich Zugang zum Terminal habe und ich ein kleines Testskript geschrieben habe. Aber es funktioniert nicht, wie kann ich es beheben? Was mache ich falsch?

/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

Nachverfolgen:

Dies ist jetzt mein Skript, das funktioniert:

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

or

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

Kann es funktionieren, wenn ein Interpreter mit einem Skript aufgerufen wird?

$ bash ./test.sh

Ich habe gesehen, dass, obwohl #!/bin/bash Fehler angegeben wurde, der Fehler von sh gepostet wurde.

UPD

$ sh ./test.sh
10
ASten

in Android befindet sich die Shell in /system/bin/sh und nicht in /bin/sh wie auf den meisten Unix-ähnlichen Systemen. Selbst wenn Sie #!/bin/bash in #!/bin/sh ändern, funktioniert es trotzdem nicht. Sie müssen #!/system/bin/sh verwenden.

Android ist keine GNU/Linux-Distribution, daher können Sie nicht erwarten, dass alle unter GNU/Linux laufenden Skripts auch auf Android funktionieren.

21
tbg

Bei den meisten Android-Geräten ist kein Bash-Interpreter installiert. Wenn Sie das Skript wirklich unter Linux und Android ausführen müssen, können Sie versuchen, BusyBox zu verwenden. Dies erfordert jedoch das Rooten Ihres Geräts (und das Aufheben der Garantie). Trotzdem weiß ich nicht, ob das Dienstprogramm ifconfig in BusyBox enthalten ist. 

Ich würde nachdrücklich empfehlen, das Android SDK zu verwenden, um eine App zu schreiben, die alles tut, was Sie erreichen wollen.

5
Wesley Wiser

Wie bereits erwähnt, umfasst das Android-Betriebssystem (bis einschließlich 4.0) nicht den BASH-Interpreter (nur Shell). Obwohl BusyBox ein großartiges Werkzeug ist, glaube ich, dass es nur eine einzige ausführbare Datei ist, die weniger große Versionen von üblichen UNIX-Dienstprogrammen enthält, aber eigentlich keinen BASH-Interpreter enthält.

Eine kompilierte Android-Version des BASH-Interpreters finden Sie in diesem Forum-Thread: http://forum.xda-developers.com/showthread.php?t=537827

2
Namuna

Sie können Busybox installieren, was Ihnen viele Dienstprogramme wie awk, file, etc ... und Terminal Emulator bietet.

  1. Erstellen Sie eine Shell-Datei mit #!/system/bin/sh als erste Zeile (Shebang)
  2. Platzieren Sie nun das fertige Skript unter /system/xbin oder /system/bin und führen Sie es vom Terminal-Emulator aus aus

Die Informationen sind ein Auszug aus diesem Artikel: WIE MAN Shell SCRIPTS AUF Android-GERÄTEN LÄUFT

0
Kenpachi