Argument übergeben, das Leerzeichen im Shell-Skript enthält
Aus irgendeinem Grund muss ich mein script in der Lage sein zu akzeptieren, Argumente mit Leerzeichen. Wenn ich z.B. ein Skript, wie folgt,
for SOME_VAR in $@
do
echo "$SOME_VAR"
cd "$SOME_VAR"
done;
wenn ich Argumente an das Skript (vorausgesetzt, es ist genannt foo.sh)
sh foo.sh "Hello world"
Ich gehe davon aus, dass das Skript zu drucken Hallo Welt und wechseln Sie in das Verzeichnis "Hello world". Aber ich bekomme diese Fehlermeldung, anstatt
hello
cd: 5: can't cd to hello
world
cd: 5: can't cd to world
also wie genau gebe ich die Auseinandersetzung mit Raum char auf einen Befehl in einem shell-Skript aus?!
InformationsquelleAutor der Frage Jeffrey04 | 2009-05-25
Du musst angemeldet sein, um einen Kommentar abzugeben.
Müssen Sie wickeln Sie die
$@
in Anführungszeichen, zu:"$@"
Dies teilt der shell zu ignorieren Leerzeichen in den Argumenten; es schaltet sich nicht alle Argumente in eine sehr lange Zeichenfolge.
InformationsquelleAutor der Antwort Aaron Digulla