Ich habe das folgende Skript:
#!/bin/bash
function consoleWriteLine() {
echo $* >&2
}
consoleWriteLine " indented by 4 spaces"
Wenn ich es ausführe, erhalte ich die folgende Ausgabe:
$ ./test.sh
indented by 4 spaces
Wo sind meine 4 Felder geblieben? Und wie bekomme ich sie zurück?
consoleWriteLine
. Beim zweiten Mal mussecho
das Leerzeichen durch zusätzliche Anführungszeichen wieder erhalten werden. Ich hätte nie gedacht, dass Sie Zitate setzen können$*
.$*
, die Variante$@
wurde speziell entwickelt, um beim Zitieren in separate Wörter zu expandieren :"$@"
Kann mehrere Argumente enthalten,"$*"
ist immer nur eines.echo
ist einer der wenigen Befehle, bei denen es keinen Unterschied macht.Hatte dieses Problem selbst,
Gemäß diesem Blog müssen Sie die IFS ändern , wie es standardmäßig Leerraum enthält , und sehen so „xxx yyy zzzz“ als 3 Strings mit weißen Raum zwischen ihnen.
IFS='\n'
vor dem Befehl wird es behoben und IFS deaktiviert, um die Änderung zu entfernen
unset IFS
quelle