C'est parce que par défaut, bash considère que l'espace est un séparateur de champ, donc il ne le traite pas comme un caractère.
Pour que ça fonctionne, il te faudrait faire avant ta boucle while :
OLDIFS=IFS
IFS=''
Tu sauvegardes l'ancienne valeur du séparateur de champ (variable IFS), et tu la set à ''
Ensuite tu fais ta boucle while, et après la boucle while, tu restitues l'ancienne valeur (pour éviter les problèmes si la suite de ton script s'attend à avoir un séparateur de champ standard) :
IFS=OLDIFS
Voici ce qu'en dit la man de bash:
IFS The Internal Field Separator that is used for word splitting after expansion and to split lines into words with the read builtin command. The default value is ``''.
[^] # Re: Remplace les doubles crochets par des simples dans ton test , et mettre un espace ...
Posté par totof2000 . En réponse au message Problème de script SHELL. Évalué à 2.
C'est parce que par défaut, bash considère que l'espace est un séparateur de champ, donc il ne le traite pas comme un caractère.
Pour que ça fonctionne, il te faudrait faire avant ta boucle while :
Tu sauvegardes l'ancienne valeur du séparateur de champ (variable IFS), et tu la set à ''
Ensuite tu fais ta boucle while, et après la boucle while, tu restitues l'ancienne valeur (pour éviter les problèmes si la suite de ton script s'attend à avoir un séparateur de champ standard) :
Voici ce qu'en dit la man de bash: