Aus irgendeinem Grund muss mein Skript Argumente mit Leerzeichen akzeptieren. Wenn ich zum Beispiel ein Skript, wie folgt,Übergabe von Argument mit Leerzeichen im Shell-Skript
for SOME_VAR in [email protected]
do
echo "$SOME_VAR"
cd "$SOME_VAR"
done;
wenn ich Argumente an das Skript übergeben (vorausgesetzt, es wird foo.sh genannt)
sh foo.sh "Hello world"
ich das Drehbuch erwarte drucken Hallo Welt und ändern Sie das Verzeichnis in "Hallo Welt". Aber ich bekomme diese Fehlermeldung statt
also wie genau übergebe ich Argument mit Leerzeichen Char an einen Befehl in einem Shell-Skript ?!
XD danke für die Antwort, ich würde gerne selbst antworten, einige weitere Erklärung http://tldp.org/LDP/abs/html/internalvariables.html#ARGLIST – Jeffrey04
Aber wenn $ @ ist eine Liste setzen " Um es herum würde es im Wesentlichen in eine lange Zeichenfolge zusammenführen.Es würde nicht iterieren darüber richtig? Und in diesem Fall gibt es keine echte Verwendung in eine for-Schleife, eine normale 'echo" $ @ "; cd" $ @ "' würde tun. Gibt es eine Lösung, wo ich 'für i in' -Konstruktionen Abgrenzung auf Zeilenumbruch haben kann, aber nicht Leerzeichen? –
@AndreasWederbrand: Nein. "$ @" ist ein besonderes Token, das bedeutet "wickeln jede einzelne Argument in Anführungszeichen ". So wird" a "bc" "(oder besser bleibt)" a "" bc "' anstelle von "" abc "" oder "a" "b" "c" '. –