PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : [Shell] Problem mit Variablenbelegung



pertze
05-04-2005, 14:32
Hallo allerseits,

ich habe folgendes Problem mit der Variablenbelegung in einer Schleife:


[...]

COLUMNS=0

find /usr/test | while read line; do
if [ `echo $line | awk -F / '{print NF-1}'` -gt $COLUMNS ]; then
COLUMNS=`echo $line | awk -F / '{print NF-1}'`
fi
done

[...]

Das Problem ist, dass COLUMNS keinen Wert zugewiesen bekommt.
Ein

echo $COLUMNS
ergibt immer 0.
COLUMNS scheint nur in der Schleife gueltig zu sein, ich muss in dem Script aber mit dem Wert von COLUMNS weiter arbeiten.

Dachte schon irgendwas anderes ist faul, aber es stimmt alles.
Ein simples


find /usr/test | while read line; do BLA=`uname`; echo $BLA; done; echo -e "\nHier muesste was stehen: $BLA"

beweist es. In der Schleife ist $BLA belegt, danach steht ein leerer String in $BLA.

Ich steh irgendwie auf'm Schlauch :confused:

Hoffe jemand kann mir helfen, danke!

t23
20-04-2005, 08:42
versuch dochmal deine Zuweisung zu ändern:

Nicht so: bla=`hallo`
sondern: bla="hallo"

dann ergibt ein echo $bla -> hallo

pertze
20-04-2005, 09:04
Hallo t23,

ich brauche aber den Rückgabewert eines Kommandos in der Variable, deswegen werden mir doppelte Anführungszeichen nichts nützen.

Aber ich habe mein Problem nun auf andere Art gelöst.
Danke trotzdem.

Gruß,
pertze

Hans-Georg Normann
20-04-2005, 19:21
... ich habe mein Problem nun auf andere Art gelöst.Wäre ja nett, wnenn andere auch von deinen Erfahrungen profitieren könnten ;) Wie sieht denn deine Lösung aus?

Hans

pertze
20-04-2005, 20:37
In der Shell-Programmierung führen immer viele Wege nach Rom.
Ich habe diesen Zwischenschritt umgangen und auf andere Weise gelöst, die aber nichts mehr mit dem oben genannten Problem zu tun hat.

Und ich habe keine Lust hier ein völlig aus dem Kontext gerissenes Konstrukt hier zu posten, dass eh niemandem etwas nützen wird, da es sehr speziell ist.

Desweiteren ist die obige Problematik nicht "gelöst".
Ich verstehe immer noch nicht wieso ich in der while Schleife die Variable nicht belegen kann.