Mailinglist Archive: opensuse-de (2226 mails)
| < Previous | Next > |
Re: bash - Problem: brauche einen Tipp
- From: Andreas Winkelmann <ml@xxxxxxxxxxxxxx>
- Date: Fri, 16 Jun 2006 15:05:17 +0200
- Message-id: <200606161505.17931.ml@xxxxxxxxxxxxxx>
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.
> 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`
--
Andreas
--
Um die Liste abzubestellen, schicken Sie eine Mail an:
suse-linux-unsubscribe@xxxxxxxx
Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken
Sie eine Mail an: suse-linux-help@xxxxxxxx
> 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.
> 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`
--
Andreas
--
Um die Liste abzubestellen, schicken Sie eine Mail an:
suse-linux-unsubscribe@xxxxxxxx
Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken
Sie eine Mail an: suse-linux-help@xxxxxxxx
| < Previous | Next > |