Pour une raison quelconque, j'ai besoin de mon script pour pouvoir accepter des arguments avec des espaces. Si, par exemple, j'ai un script comme suit,Passage d'un argument contenant un espace dans le script shell
for SOME_VAR in [email protected]
do
echo "$SOME_VAR"
cd "$SOME_VAR"
done;
si je passe des arguments au script (en supposant qu'il est appelé foo.sh)
sh foo.sh "Hello world"
J'attends le script d'imprimer Bonjour tout le monde et changez le répertoire pour "Bonjour tout le monde". Mais je reçois ce message d'erreur au lieu
hello
cd: 5: can't cd to hello
world
cd: 5: can't cd to world
alors comment exactement ce que je passe avec l'espace arguments char une commande dans un script shell ?!
XD merci pour la réponse, j'étais comme aller répondre à moi-même, quelques explications supplémentaires http://tldp.org/LDP/abs/html/internalvariables.html#ARGLIST – Jeffrey04
Mais si $ @ est une liste mettant " autour de lui le fusionnerait en une longue chaîne de caractères et ne le ferait pas passer par-dessus Et dans ce cas, il n'y a pas vraiment d'utilité à avoir une boucle for, un 'echo" normal $ @ "; cd" $ @ " Y a-t-il une solution où je peux avoir' for i dans '-construit délimite sur la coupure de ligne mais pas l'espace? –
@AndreasWederbrand: Non." $ @ "est un jeton spécial qui signifie" envelopper chaque individu "a" bc "' devient (ou plutôt reste) '" a "" bc "' au lieu de '" abc "' ou '" a "" b "" c "'. –