Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 04/04/2018, à 09:00

Crestey

[Résolu] echo ${var::5} marche pas si dans un script.

Bonjour,

Je veux extraire (pour l'exemple) les 5 premiers caractères d'une chaîne :

crestey64@PC3:~$ var="0123456789"
crestey64@PC3:~$ echo $var
0123456789
crestey64@PC3:~$ echo ${var::5}
01234
crestey64@PC3:~$ 

Super !

Alors je mets tout ça dans un script, et de qu'est-ce que je m'aperçois-je ?

crestey64@PC3:~$ cat essai
#!/bin/bash
var="0123456789"
echo $var
echo ${var::5}
crestey64@PC3:~$ sh essai
0123456789
essai: 4: essai: Bad substitution
crestey64@PC3:~$

Quel est ce mystère SVP ?

Dernière modification par Crestey (Le 04/04/2018, à 09:18)


Merci à tous.
Sous Ubuntu/XFCE depuis 2013. Ça fonctionne vraiment très bien.

Hors ligne

#2 Le 04/04/2018, à 09:07

pingouinux

Re : [Résolu] echo ${var::5} marche pas si dans un script.

Bonjour,
C'est parce que tu utilses sh.
Il faut faire :

bash essai

ou

chmod u+x essai
./essai

Hors ligne

#3 Le 04/04/2018, à 09:18

Crestey

Re : [Résolu] echo ${var::5} marche pas si dans un script.

Merci !
Ça reste un mystère pour moi, mais au moins maintenant ça marche ! smile


Merci à tous.
Sous Ubuntu/XFCE depuis 2013. Ça fonctionne vraiment très bien.

Hors ligne

#4 Le 04/04/2018, à 10:56

bruno

Re : [Résolu] echo ${var::5} marche pas si dans un script.

Il n'y a pas de mystère wink

$ ls -l /bin/sh
lrwxrwxrwx 1 root root 4 févr. 17  2016 /bin/sh -> dash

Si tu écris du code avec une syntaxe spécifique à bash, tu dois utiliser l'interpréteur bash.
Si ton code utilise une syntaxe conforme à la norme POSIX (pas de « bashismes »), tu peux utiliser n'importe quel interpréteur shell, dont dash.

Hors ligne

#5 Le 04/04/2018, à 11:20

Crestey

Re : [Résolu] echo ${var::5} marche pas si dans un script.

Ok merci bruno, la brume se lève. A ta connaissance quel est le meilleur endroit sur la toile pour consulter la norme POSIX.


Merci à tous.
Sous Ubuntu/XFCE depuis 2013. Ça fonctionne vraiment très bien.

Hors ligne

#6 Le 04/04/2018, à 11:59

bruno

Re : [Résolu] echo ${var::5} marche pas si dans un script.

Si tu y tiens, je te recommande cette lecture (en anglais) http://www.gnu.org/software/autoconf/ma … able-Shell

Mais il n'y a aucune obligation à faire des scripts conformes à POSIX sauf si tu as des impératifs de portabilité.

D'autant plus que bash est présent sur la plupart des systèmes de type Linux/Unix (y compris MacOS X) et que tu as pris soin d'utiliser le bang #!/bin/bash en tête de ton script.

Hors ligne