Mon même script BASH fonctionne dans Fedora/CentOS.
Mais je teste un Android eee pad transformer
.
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'";
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
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.
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.
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
Vous pouvez installer Busybox , qui vous fournit de nombreux utilitaires tels que awk, fichier, etc ... et Terminal Emulator .
#!/system/bin/sh
en première ligne (Shebang)/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