Je ne suis pas expert en Bash, loin de là, mais quelques trucs me chiffonnent :
Bloc de code:
https://smsapi.free-mobile.fr/sendmsg?user=0123456789&pass=xxxxxxxxx&msg=$message
Il faut comprendre que cela revient (presque) à ouvrir dans le navigateur cette adresse. Sauf qu'on ne peut pas mettre n'importe quel caractère dans une adresse web.
C'est pour ça que tu as eu l'erreur suivante: "curl: (3) Illegal characters found in URL".
En général, pour éviter ça, on "pourcent échappe". C'est à dire qu'on remplace les caractères interdits par une suite de caractères avec des % pour signaler que le serveur devra les traiter différemment. Par exemple, c'est "%20" pour un espace.
Si vous tapez "
https://www.apple.com/fr /test" dans Safari (notez la présence de l'espace), il le transformera en "
https://www.apple.com/fr /test" une fois que vous aurez tenté d'y accéder. Bon, ce lien ne mène nulle part vraiment, mais c'est pour l'exemple.
Ensuite, je ne suis pas familier avec
curl, les paramètres (
user,
pass, msg et leurs valeurs respectives) peuvent sûrement être passé en paramètres de
curl sans avoir à concaténer.
Enfin, les adresses Web on une certaine limite en taille, donc l'URL formée avec $message ne peut être "infiniment grande", il doit avoir une limite de taille à ne pas dépasser.
Edit: J'ai trouvé ceci :
C'est exactement ce qu'utilise ce
lien pour le %20:
msg : le contenu du SMS encodé sous forme d’url (Percent-encoding)
Et aussi le fait qu'on puisse utiliser du POST plutôt que du GET (et là, c'est bien mieux).
Vous pouvez également, si vous le préférez, envoyer les paramètres en POST. Dans ce cas, le contenu du message n’a pas besoin d’être encodé.
Donc pas la peine de faire des % escape sur $message dans ce cas-là !
Je conseillerais donc de faire la recherche suivante :
"cURL + JSON + POST" dans ton moteur de recherche préféré, tu devrais trouver des réponses pour ça.