
Hallo Ekkard, Am Don, 06 Mär 2008, Ekkard Gerlach schrieb:
ich stelle gerade fest: Mit
echo "****" | while read a; do echo $a; done
wird **** zu einem 'ls *' epandiert. Wie verhindere ich das?
Quoten! Wenn du Variablen immer quoten würdest, was man immer tun sollte, dann hättest du das Problem nicht. Und 'ls' hat da nix mit zu tun, sondern die shell expandiert beim "echo $a" die '****' zu einer Liste von Dateinamen, die es an's builtin 'echo' gibt. $ ls a b c $ echo "****" **** $ set -x; echo **** + echo a b c a b c
Ein einfaches echo "****" | read a; echo $a macht das nicht. Es wird einfach nichts ausgegeben.
Kommt darauf an, zu was die '****' expandiert werden können. $ a='****'; echo "$a" $a + a=**** + echo '****' a b c **** a b c Noch Fragen?
Letztlich brauche ich eine Möglichkeit eine Datei, die aus einer pipe kommt, mit read einzulesen und die Zeilen mit ****..... sollen einfach ignoriert/gelöscht werden:
formail ...... | my_skript
formail ... | fgrep -v '****' | my_script oder sowas (komplett mit builtins): $ echo -e 'a\n****\nb' | while read a; do case $a in *\*\*\*) continue;; *) echo "a=$a";; esac; done + echo -e 'a\n****\nb' + read a + echo a=a a=a + read a + continue + read a + echo a=b a=b + read a
Nun könnte ich mir ein kompliziertes Skript basteln, dass die Zeilen nicht mit while read ... einliest, sondern mit <while-Schleife> ... read a; ... done das solange macht, bis read a ein EOF meldet. Gehts nicht einfacher?
Siehe oben. -dnh -- Wir brauchen dem CIA keine falschen Beweismittel liefern, wir _haben_ Massenvernichtungswaffen in Deutschland. Schau mal ins Fernsehen, ha, Gute Zeiten Schlechte Zeiten, Superstars, Lenßen und Partner, die ganzen Ferrero-Küßchen Wixer... -- Michael Mittermaier, "Paranoid" -- 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