PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : While Schleife



greywolve
28-11-2005, 18:11
Hi,

ich habe eine Frage bezüglich der While-Schleife und Shell-Script ...

und zwar wollte ich eine Liste zeilenweise per

while read LINE
do
[...]
done

auslesen.
Aber zusätzlich sollte innerhalb der Schleife eine weitere ausgeführt werden.
Hier mein Beispiel:


cat sowieso.txt
while read LINE
do
#read the ip's
cat netscandn.tmp |\

#check if user is online
if grep -s $2
then

#read ip
awk -F: '{print $1}' > userfound.tmp
cat userfound.tmp |\
#read userfound
while read USER
do

#send message
net send $USER $1
echo \<br\>
done
#write user to online
echo $2  >> onlineuser.tmp

else
echo \<br\>
echo $2 offline

#write user to offline
echo $2  >> offlineuser.tmp
fi
done

Aber irgendwie macht der da nichts. Wenn ich die innere while-Schleife raus nehme klappt alles, nur nicht so wie ich es will (brauch den awk Befehl zur userfound.tmp (mit evtl mehreren Einträgen))

ICh hoffe mir kann hierbei jemand helfen, oder Infos geben.
Wäre echt super ... schonma Danke! im Voraus...

Gruß
Benni

colo
28-11-2005, 19:47
Ohne dass du eine Art Testumgebung - oder zumindest eine genauere Spezifikation der Problemstellung - zur Verfuegung stellst, kann ich dir nicht sicher helfen; ich versuch es trotzdem:


while read LINE;
do
echo "some code [...]";
while read INNEN;
do
echo ${INNEN};
done < inputfile_fuer_innen
echo "${LINE} abgearbeitet"
done < inputfile_fuer_auszen


Ansonsten faellt mir in deinem Code (abgesehen davon, dass er verdammt krude wirkt ;)) auf, dass du mit temporaeren Dateien anstelle von Pipes arbeitest, was suboptimal ist. `cat file | grep` ist auch unnoetig, da grep nicht nur von stdin lesen kann.


Wenn du einen tarball mit Beispieldaten bereitstellst, die das Problem etwas genauer chartakterisieren, kriegen wird das aber sicher noch hin ;)

greywolve
29-11-2005, 13:27
hi,

danke für den Hilfsversuch ...

meine Schleife hat funktioniert, jedoch nicht das vorhergehende, die Parameterübergabe an das shell script.

Versuche jetzt das ganze komplett in einem Perl script unterzubekommen, ohne ein externen Scriptauffruf. Werd ich zwar nicht ganz schaffen, aber hoffe ma das zweite ...

Weiß zwar da auch nicht mehr weiter, aber die Frage hab ich in einem extra Thread gepostet.

Danke nochmal

Gruß
Benni