J'ai le script suivant:
#!/bin/bash
function consoleWriteLine() {
echo $* >&2
}
consoleWriteLine " indented by 4 spaces"
Lorsque je l'exécute, j'obtiens la sortie suivante:
$ ./test.sh
indented by 4 spaces
Où sont passés mes 4 espaces? Et comment les récupérer?
consoleWriteLine
. La deuxième fois, c'estecho
le blanc qui doit être à nouveau préservé par des guillemets supplémentaires. Je n'aurais jamais pensé que vous pouviez mettre des guillemets$*
.$*
, la variante a$@
été spécialement créée pour être développée en mots séparés lorsqu'elle est citée:"$@"
peut être plusieurs arguments, n'en"$*"
est qu'un.echo
est l'une des rares commandes où cela ne fait aucune différence.J'ai eu ce problème moi-même,
Selon ce blog, vous devez modifier l'IFS car, par défaut, il contient un espace blanc et voit donc "xxx yyy zzzz" comme 3 chaînes avec un espace blanc entre elles.
IFS='\n'
avant la commande le corrige et désactive IFS pour supprimer la modification
unset IFS
la source