Gérer les espaces dans une chaîne

Le problème exposé dans ce sujet a été résolu.

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;
+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. ;-)

+0 -0
Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

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