While Schleife

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
Benutzeravatar
Voyager_MP
Beiträge: 628
Registriert: 22.06.2004 10:04:07
Wohnort: Aachen

While Schleife

Beitrag von Voyager_MP » 29.06.2004 11:14:17

hi, ich brauche hilfe bei einer while schleife,

while [ programm (dd) lauft ] ; do ...
^^^^^^^^^^^^^^^^^^^^^
wie bekomme ich das hin ?

mastermind_the_real_one
Beiträge: 644
Registriert: 16.12.2003 15:44:51

Beitrag von mastermind_the_real_one » 29.06.2004 13:10:50

Code: Alles auswählen

#!/bin/sh
dd irgendwas
while true
do
  irgendwas
done
without warranty

greetz
mastermind

ernohl
Beiträge: 1248
Registriert: 04.07.2002 08:11:56
Wohnort: HL

Re: While Schleife

Beitrag von ernohl » 29.06.2004 13:59:18

Voyager_MP hat geschrieben:
while [ programm (dd) lauft ] ; do ...
^^^^^^^^^^^^^^^^^^^^^
wie bekomme ich das hin ?

Code: Alles auswählen

 while [ "`ps -ef | grep "prozessname parameter" | grep -v grep`" != "" ]; do ...
Gruß
ernohl

Benutzeravatar
blackm
Moderator und Co-Admin
Beiträge: 5921
Registriert: 02.06.2002 15:03:17
Lizenz eigener Beiträge: MIT Lizenz

Beitrag von blackm » 30.06.2004 22:46:58

mastermind, bei dir laeuft erst der dd Prozess zuende und dann gibt es eine Endlosschleife.

by, Martin
Schöne Grüße

Martin

Neu im Forum? --> https://wiki.debianforum.de/debianforum ... tensregeln
Log- und Konfigurationsdatein? --> pastebin.php
Forum unterstützen? --> https://wiki.debianforum.de/debianforum.de/Spenden

mastermind_the_real_one
Beiträge: 644
Registriert: 16.12.2003 15:44:51

Beitrag von mastermind_the_real_one » 01.07.2004 00:37:32

blackm hat geschrieben:mastermind, bei dir laeuft erst der dd Prozess zuende und dann gibt es eine Endlosschleife.

by, Martin
Uuups, stimmt. Zum Glück hab ich noch "without warranty" drunter geschrieben. Das kommt davon, wenn man es mal eben auf die Schnelle postet.

Sorry Voyager_MP, war keine Absicht.

greetz
mastermind

storm
Beiträge: 1581
Registriert: 01.05.2004 13:21:26
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: DE

Beitrag von storm » 01.07.2004 01:12:50

while dd if=/dev/zero of=./nullen bs=16 count=10
do
break
done
oder wie?


ciao, frank
drivers/ata/libata-core.c: /* devices which puke on READ_NATIVE_MAX */

Benutzeravatar
Joghurt
Beiträge: 5244
Registriert: 30.01.2003 15:27:31
Wohnort: Hamburg
Kontaktdaten:

Beitrag von Joghurt » 01.07.2004 01:42:21

Code: Alles auswählen

dd ........  &
while [ -n "`ps | grep $!`" ]; do
   echo Schnarch...
done
Keine Leerzeichen zwischen " und `:!:

mastermind_the_real_one
Beiträge: 644
Registriert: 16.12.2003 15:44:51

Beitrag von mastermind_the_real_one » 01.07.2004 01:43:49

@storm:

Code: Alles auswählen

while ps -a | grep dd
        do
                irgendwas
        done
Ist aber im Grunde nichts anderes als enohls Lösung. Deshalb hab ich es vorhin nicht mehr gepostet.

greetz
mastermind

Benutzeravatar
The Torso
Beiträge: 882
Registriert: 13.07.2003 12:46:40
Lizenz eigener Beiträge: MIT Lizenz

Beitrag von The Torso » 01.07.2004 10:04:18

die Loesung funktioniert aber nicht, wenn "ps -a" auch ein anderes Prgoramm / einen anderen Prozess anzeigt, der die Buchstaben "dd" beinhaltet.
Debian GNU/Linux 00101010

mastermind_the_real_one
Beiträge: 644
Registriert: 16.12.2003 15:44:51

Beitrag von mastermind_the_real_one » 01.07.2004 13:51:43

@The Torso:

Da kann man ja noch verfeinern - soll ja nur ein grobes Gerüst sein ;)

Aber, meines Erachtens nach funktioniert hier keine der vorgeschlagenen Lösungen optimal, weil wenn man z.B. zum Testen "dd" durch "xeyes" ersetzt und "irgendwas" durch "xclock", dann klappt das nur soweit, dass wenn man "xeyes" beendet "xclock" noch immer läuft. Wenn dieses dann ebenfalls beendet wird, startet es zwar nicht mehr neu, aber es läuft halt noch. Kommt jetzt natürlich darauf an was Voyager_MP vorhat. Wenn "xclock" bei ihm ein Script/Programm ist, das nur kurz läuft und sich dann beendet, wäre es ausreichend. Ansonsten meiner Meinung nach nicht, da "xclock" läuft und läuft und läuft.

greetz
masterrmind

Antworten