Ich bestimme in einem Bash-Script eine Variable, die Leerzeichen enthält und seit meinem heutigen Update funktioniert das Script nicht mehr. zB ~> var="a|b|c d|e" ~> echo $var a|b|c d|e Zwischen c und d sollten _2_ Leerzeichen sein! Al -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
On Fri, 27 Feb 2009 18:02:44 +0100, Al Bogner
Ich bestimme in einem Bash-Script eine Variable, die Leerzeichen enthält und seit meinem heutigen Update funktioniert das Script nicht mehr.
zB
~> var="a|b|c d|e" ~> echo $var a|b|c d|e
Zwischen c und d sollten _2_ Leerzeichen sein!
Al
echo "$var" Jürgen -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
Am Freitag 27 Februar 2009 18:12:31 schrieb Juergen Langowski:
On Fri, 27 Feb 2009 18:02:44 +0100, Al Bogner
wrote: Ich bestimme in einem Bash-Script eine Variable, die Leerzeichen enthält und seit meinem heutigen Update funktioniert das Script nicht mehr.
zB
~> var="a|b|c d|e" ~> echo $var a|b|c d|e
Zwischen c und d sollten _2_ Leerzeichen sein!
Al
echo "$var"
Vielen Dank, da habe ich mich wohl selber reingelegt. Im Script selber quote ich, für eine Anzeige beim Debugging habe ich mir das gespart. Ist dieses Verhalten eigentlich ein Bug oder ein Feature? Mein Problem ist eigentlich eine sed-Syntax: ~> var="a|b|c d|e" ~> var2=`echo "$var" | sed 's/ / \> /g'` ~> echo "$var" a|b|c d|e Ergebnis sollte sein: a|b|c > d|e Al -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
Am Friday 27 February 2009 19:01:42 schrieben Sie:
Mein Problem ist eigentlich eine sed-Syntax:
~> var="a|b|c d|e" ~> var2=`echo "$var" | sed 's/ / \> /g'`
~> echo "$var" a|b|c d|e
Ergebnis sollte sein: a|b|c > d|e
Sorry, passt ja. Da muss ich im Script suchen, wo das Problem liegt. Die Variablen sind dort komplizierter und hier habe ich dann var statt var2 abgefragt. Al -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
Hallo, Am Fre, 27 Feb 2009, Al Bogner schrieb:
da habe ich mich wohl selber reingelegt. Im Script selber quote ich, für eine Anzeige beim Debugging habe ich mir das gespart. Ist dieses Verhalten eigentlich ein Bug oder ein Feature?
Dokumentiertes Feature. ==== man bash ==== Word Splitting [..] If IFS is unset, or its value is exactly <space><tab><newline>, the default, then any sequence of IFS characters serves to delimit words. [..] EXPANSION Expansion is performed on the command line after it has been split into words. [..] echo [-neE] [arg ...] Output the args, separated by spaces, followed by a newline. ==== Dein $var wird also expandiert (mit den 2 Leerzeichen) aber dann als MEHRERE Argumente an echo übergeben. $ set -x; v="a b c"; echo $v + v=a b c + echo a b c a b c $ echo "$v" + v=a b c + echo 'a b c' a b c Der entscheidende Unterschied ist, daß echo _ein_ durch '' geschütztes Argument zu sehen bekommt. Und was bete ich hier ständig? Quote immer deine Variablen! -dnh -- Oh, please. The Pentagon's lost entire countries. -- Col. O'Neill -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
Am Freitag 27 Februar 2009 21:01:57 schrieb David Haller:
Und was bete ich hier ständig? Quote immer deine Variablen!
Mache ich doch, nur für das vorübergehende Suchen eines Fehlers, hatte ich es mir erspart. Ich hatte zum Testen die (gequotete) Variable etwas höher nicht so komplex formuliert und das weiter unten dann vergessen und dann ging das Probieren los und es wurde chaotisch. Al -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
participants (3)
-
Al Bogner
-
David Haller
-
Juergen Langowski