Dernièrement, j'ai joué avec les scripts .sh dans Android. Au début, j'ai utilisé BusyBox et son utilitaire de script intégré, bien que je me sois rapidement rendu compte que coder sur le téléphone n'est pas le meilleur, j'ai donc basculé sur mon bureau et commencé à utiliser ADB pour pousser mes scripts sur mon appareil. Tout a bien fonctionné pendant environ deux semaines, jusqu'à ce que, récemment, les mêmes scripts qui fonctionnaient parfaitement auparavant me disent quelque chose. : not found[0]: syntax error: '{
Erreur. J'ai copié exactement le même code de mon script et j'ai utilisé BusyBox pour le créer pour moi, et de cette façon il fonctionne parfaitement. Le code est donc correct.
Après quelques recherches, je pense que c'est soit à cause des permissions, soit à cause de l'encodage, soit à cause de l'emplacement des scripts. J'ai essayé plusieurs emplacements différents (parce que je veux pouvoir exécuter les scripts sans Root), et j'ai fini par choisir /storage/emulated/0
. Si j'ai bien compris, il s'agit d'un lien symbolique vers le stockage interne, qui est accessible en lecture/écriture sans Root. Mais peut-être qu'il est parfois exécutable et parfois non ? Je n'en sais rien.
Ma question est donc la suivante : Quel est le meilleur emplacement sur un appareil Android pour exécuter des scripts sans Root ? De préférence, un chemin qui fonctionne sur n'importe quel appareil Android.
Info :
- Samsung S7 SM-G930F rooté
- Android 8.0.0
- J'utilise
#!/system/bin/sh
dans les fichiers .sh - J'exécute les scripts avec
sh script.sh
- Lorsque l'on essaie de l'exécuter en tant qu'exécutable
./script.sh
Je reçois unPermission denied
erreur. Avec ou sans Root.
PS : Et si quelqu'un a une idée de la raison pour laquelle les mêmes scripts ont cessé de fonctionner sans crier gare, je serais heureux de le savoir !
UPDATE : Grâce à @IrfanLatif, j'ai réussi à corriger le problème des : not found[0]: syntax error: '{
Erreur ! J'utilisais Visual Studio Code comme éditeur pour les scripts, ce qui les enregistrait avec la séquence de fin de ligne. CRLF
ce qui n'est pas du goût d'Android. Pour y remédier facilement, il suffit de remplacer les fins de ligne par LF
problème résolu. Consultez les commentaires pour plus d'informations.