Gérer les espaces dans une chaîne

L'auteur de ce sujet a trouvé une solution à son problème.
Auteur du sujet

Bonjour,

Je travaille en shell sous Linux (sh) et je galère avec les espaces. En effet, je récupère un nom de dossier en ligne de commande puis le stocke dans src. Mais par la suite, lorsque je passe $src est argument à une fonction ou un script, il me découpe automatiquement la chaîne selon les espaces qu'elle contient, donc je suis obligé de l'entourer de guillemets : func "$src". N'y a-t-il pas possibilité de s'épargner cela, c'est-à-dire de faire un truc du genre src="$src" puis de pouvoir faire func $src au lieu de func "$src" ?

Merci.

+0 -0

Quel est le problème de devoir mettre des guillemets ?

Si tu changes le caractères de séparation de chaîné, peut-être que cela changera ce comportement … Cette valeur est l'IFS :

1
2
3
4
sp="Hello black"
for i in $sp; do echo $i; done;
IFS=','
for i in $sp; do echo $i; done;

Édité par ache

+0 -0

oui, (ba)sh est très pénible pour ça, et c’est encore pire quand on commence à manipuler des tableaux (vous ne trouvez pas "${var[@]}" concis et naturel, vous ?). pour ces bêtes raisons, j’ai testé fish, qui a une syntaxe bien plus propre, et finalement c’est un très chouette shell, et pas seulement pour ça. ;-)

écrire français sous Windows : fr-oss (azerty++) ou bépo (étudié pour le français) | <insérer un truc spirituel ici>

+0 -0
Vous devez être connecté pour pouvoir poster un message.
Connexion

Pas encore inscrit ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte