Hallo, Am Freitag 16 Juni 2006 15:05 schrieb Andreas Winkelmann:
Am Friday 16 June 2006 14:05 schrieb Rolf Masfelder:
mag sein das das Thema OT ist, aber mein Problem besteht auf einem Suse 10.0 System ...
Ich brauch einen Hinweis wo ich weiterlesen kann, weil mir keine sinnvollen begriffe einfallen nach denen ich suchen / googlen könnte.
Hier ein Beispiel wie das Problem aussieht:
(in einer Konsole; passiert aber auch innerhalb von bash-scripten)
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?
Das "|" erzeugt eine SubShell. Dort hin werden zwar die Variablen als Kopie mitgenommen, aber veränderungen nicht mit zurück.
Die SubShell ist wohl die Quelle meiner Probleme ...:-(
Wie kann ich nach der Schleife den Inhalt der in der Schleife veränderten Variablen bekommen. Mir wäre hier ein "geht _nicht_" wirklich lieber (auch wenn sich das jetzt komisch liest).
test=`echo "nicht" | while read wort; do test="$test _${wort}_"; echo $test; done`
Das geht jetzt hier bei meinem Beispiel, das script an dem ich sitze ist aber einige Zeilen länger ... Ich weis jetzt aber wie ich weiter vorgehen muss.
-- Andreas
Danke für die Hinweise (auch an die Anderen, die mir geantwortet haben) -- MfG Rolf Masfelder EMail: rolf.masfelder@nector.de -- 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