web-dev-qa-db-fra.com

Comment faire pour exécuter le script BASH dans mon Android?

Mon même script BASH fonctionne dans Fedora/CentOS.

Mais je teste un Android eee pad transformer. enter image description here

Où j'ai accès au terminal et j'ai écrit un petit script de test. Mais sa ne fonctionne pas, comment puis-je résoudre ce problème? Qu'est-ce que je fais mal?

/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

Suivre:

Ceci est mon script maintenant qui fonctionne:

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

Peut-être que cela fonctionnera lorsque vous appelez un interprète avec un script?

$ bash ./test.sh

J'ai vu que, même si cela est spécifié, l'erreur #!/bin/bash a été publiée par sh - peut-être qu'il ne se trompe pas.

UPD

$ sh ./test.sh
10
ASten

sous Android, le shell se trouve dans /system/bin/sh et non pas /bin/sh comme sur la plupart des systèmes de type Unix. Ainsi, même si vous changez #!/bin/bash en #!/bin/sh, cela ne fonctionnera toujours pas. vous devrez utiliser #!/system/bin/sh

Android n'est pas une distribution GNU/Linux. Vous ne pouvez donc pas vous attendre à ce que tous les scripts exécutés sous GNU/Linux fonctionnent également sur Android.

21
tbg

La plupart des appareils Android ne disposent pas d'un interpréteur bash. Si vous avez vraiment besoin d'exécuter le script sous Linux et Android, vous pouvez essayer d'utiliser BusyBox mais cela nécessitera d'enraciner votre appareil (et éventuellement d'annuler votre garantie). Même dans ce cas, je ne sais pas si l'utilitaire ifconfig est inclus dans BusyBox. 

Je vous recommande fortement d'utiliser le SDK Android pour écrire une application et faire tout ce que vous tentez d'accomplir.

5
Wesley Wiser

Comme indiqué précédemment, le système d'exploitation Android (jusqu'à la version 4.0 incluse) n'inclut pas l'interpréteur BASH (uniquement Shell). Bien que BusyBox soit un excellent outil, je pense qu’il ne s’agit que d’un seul exécutable qui combine des versions réduites aux fonctionnalités réduites des utilitaires UNIX courants, mais n’inclut pas l’interpréteur BASH.

Pour obtenir une version compilée Android de l’interprète BASH, consultez le fil de discussion suivant: http://forum.xda-developers.com/showthread.php?t=537827

2
Namuna

Vous pouvez installer Busybox , qui vous fournit de nombreux utilitaires tels que awk, fichier, etc ... et Terminal Emulator .

  1. Créer un fichier shell avec #!/system/bin/sh en première ligne (Shebang)
  2. Placez maintenant le script terminé sous /system/xbin ou /system/bin et exécutez-le à partir de l'émulateur de terminal.

Les informations sont extraites de cet article: COMMENT EXÉCUTER DES SCRIPTS Shell SUR DES PÉRIPHÉRIQUES Android

0
Kenpachi