• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

Bash Schleifen abbruch??

Tiran

Newbie
Hi, ich habe da so nen kleines Tool geschrieben soweit funk auch alles aber bei einem Programmteil gib es ein Problem.

Lasse mir den Netzwerk-Traffic ausgeben in einer while schleife schön und gut, geht auch alles aber ich komme nicht mehr aus der schleife raus.

Code:
while  [ Fehlende bedingung ]; do
clear
echo -e "\033[0;31mNetswerk-Traffic\033[0m\n"
ifconfig eth0 | grep "RX b" | awk '{print "Download:<--\n"$2" " $3 $4"\n\nUpload:-->\n"$6" " $7 $8}'
sleep 1
done

Also da ich kein read benutzen kann um abzufragen wann er aus der schleife gehen soll komme ich nicht mehr raus! Es sei denn es gibt eine bedingung die sofort auf Tasten druck die schleife verlässt! Oder einer hat einen anderen lösungs Vorschlag.

Habe nirgends was gefunden, deswegen frag ich euch.

Thx im Voraus

MfG

Alexander
 
A

Anonymous

Gast
Tiran schrieb:
Also da ich kein read benutzen kann um abzufragen wann er aus der schleife gehen soll komme ich nicht mehr raus! Es sei denn es gibt eine bedingung die sofort auf Tasten druck die schleife verlässt! Oder einer hat einen anderen lösungs Vorschlag.

Leider hast du nicht das ganze Script angegeben, so dass man nicht erkennen kann warum kein read verwendet werden kann. Also hier mal ein paar einfache Lösungsansätze.
1. Abbruch des gesammten Scriptes mit STRG+C
2. Statt Entlosschleife eine definierte Schleifenanzahl etwa
Code:
for i in `seq 1 100 `
    do
       .......
    done
also 100 Scheifenduchläufe
3. eventuell doch read möglich ???
Code:
i=
while [  -z $i ]  ; do
clear
echo -e "\033[0;31mNetswerk-Traffic\033[0m\n"
ifconfig eth0 | grep "RX b" | awk '{print "Download:<--\n"$2" " $3 $4"\n\nUpload:-->\n"$6" " $7 $8}'
#sleep 1
read -t1 i
done
hier bricht irgend einen Buchstaben oder Zahl und danach Enter die Schleife ab. Auf sleep kannst du verzichten, das erledigt der Timeout (-t1 == 1 Sekunde) von read.

Ansonsten gibt es noch jede Menge Möglichkeiten über Flags im Dateisystem, Pipes oder Signale einen definierten Schleifenabbruch über Tastatureingabe einzuleiten, aber das wird komplizerter und dazu müsste man wohl das ganze Scriptkonzept mal gesehen haben.

robi
 
OP
T

Tiran

Newbie
Hi!

Ja Thx die 2. Lösung hat funktioniert die gleiche Lösung hatte ich auch schon versucht allerdings hatte ich bei read den timeout nicht gesetzt!
Ja man sollte sich doch genauer die --help durch lesen :). Aber danke das du mir geholfen hast!

MfG
 
Oben