On Friday 16 June 2006 14:05, Rolf Masfelder wrote:
rma@wasser:~> test=geht rma@wasser:~> echo $test geht rma@wasser:~> echo "nicht" | while read wort; do test="$test _${wort}_"; echo $test; done geht _nicht_ rma@wasser:~> echo $test geht
DerVariablen test wird Anfangs etwas zugewiesen ("geht") dann in der while-schleife noch etwas angehängt ("_nicht_"). Am Ende der Schleife wird wie erwartet "geht _nicht_" ausgegeben!
Nach der Schleife ergibt ein "echo $test " aber wieder "geht".
Was passiert da?
Ich vermute, dass hängt damit zusammen, dass die pipe eine Sub-Shell öffnet. (Das Thema gab es hier vor kurzen in einem ganz anderen Zusammenhang. Siehe "Shellscript-Problem: /bin/sh Funktion while return" von Harry Rüter.) Innerhalb der Sub-Shell ist zwar die Variable der Mutter-Shell bekannt, aber verändern kannst Du daran nichts.
Wie kann ich nach der Schleife den Inhalt der in der Schleife veränderten Variablen bekommen.
Christian Boltz hat dazu ein Beispiel: http://www.cboltz.de/de/linux/bash/ Übrigens: Es ist immer eine gute Idee, Variablen _nicht_ test zu nennen, da test auch ein Kommando ist. Das kann ungewollte Nebenwirkungen haben. Gruß, Achim -- Um die Liste abzubestellen, schicken Sie eine Mail an: suse-linux-unsubscribe@suse.com Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: suse-linux-help@suse.com