• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

[gelöst] White-Spaces in Shell-Variablen

Efchen

Newbie
Hallo,

ich quäle mich gerade mit Shell-Variablen. Und zwar scheinen diese bei ihrer Zuweisung alle überflüssigen Blanks zu eliminieren.

> foo="foo...bar" (Das sollen drei Leerzeichen zwischen foo und bar sein.)
> echo $foo
foo bar

Gibt nur ein Leerzeichen aus.
Folglich:

> echo $foo > foo
> cat foo
foo bar

...steht auch in der Datei nur ein Leerzeichen.
Aber:

> echo ${#foo}
9

Jetzt komme ich ins Grübeln. Und wie kriege ich mehe Blanks in eine Datei, das ist nämlich mein Hauptziel, dass beim Einlesen, Bearbeiten und wieder Wegschreiben einer Datei nicht alle zusätzlichen Whitespaces eliminiert werden.

Kann mir jemand helfen?

Danke,
-Efchen
 

abgdf

Guru
Hallo Efchen,

das braucht eine Erklärung, weil es eine Shell-Besonderheit ist:

Code:
foo="foo   bar"
echo $foo

bewirkt, daß die Shell bei der echo-Zeile erst die Expansion der Variablen foo vornimmt. Das Ergebnis ist dann also

Code:
echo foo   bar

Das begreift die Shell dann als zwei Argumente für echo, die nacheinander abgearbeitet werden.

Mit

Code:
echo "$foo"

führt die Variablenexpansion zu dem gewünschten

Code:
echo "foo   bar"

Vielleicht interessiert Dich meine bash-Seite

http://www.angelfire.com/linux/tux25/bash.html

Viele Grüße
 
OP
E

Efchen

Newbie
Vielen Dank, Ihr beiden habt mir sehr geholfen! Auf das Einfachste kommt man immer nicht! :)

Schönen Tag noch,
-Efchen
 
Oben