Sie sind nicht angemeldet.

Lieber Besucher, herzlich willkommen bei: Ubuntu-Forum & Kubuntu-Forum | www.Ubuntu-Forum.de. Falls dies Ihr erster Besuch auf dieser Seite ist, lesen Sie sich bitte die Hilfe durch. Dort wird Ihnen die Bedienung dieser Seite näher erläutert. Darüber hinaus sollten Sie sich registrieren, um alle Funktionen dieser Seite nutzen zu können. Benutzen Sie das Registrierungsformular, um sich zu registrieren oder informieren Sie sich ausführlich über den Registrierungsvorgang. Falls Sie sich bereits zu einem früheren Zeitpunkt registriert haben, können Sie sich hier anmelden.

  • »Fliegenpilz« ist der Autor dieses Themas

Beiträge: 229

Registrierungsdatum: 01.07.2007

Derivat: Ubuntu

Architektur: 64-Bit PC

Andere Betriebssysteme: Arch

  • Nachricht senden

1

25.03.2008, 11:33

Shell-Skript Wie testen ob ein Programm ohne Fehler ausgefuehrt wurde?

Kann man irgendwie ueberpruefen ob ein Programm in einem Shell-Skript korrekt ausgefuehrt wurde?
Grund der Frage: Ich hab mir ein Skript geschrieben was mir automatisch alle .otrkey und .omrkey Dateien in dem jeweiligen Ordner dekodiert und diese Dateien dann anschliessend loescht. Loeschen soll er ja aber nur wenn das dekodieren ohne Fehlermeldung von Statten gegangen ist ^^
Geht das irgendwie? Und wenn ja: wie?
Intel Core2Quad Q6600 4x 2,4 GHz | 6 GB DDR2 RAM | GF 8600GT 512 MB DDR3 | 80 GB & 500 GB SATA HDD
Samsung SyncMaster 931c 1280x1024 px

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Fliegenpilz« (25.03.2008, 14:57)


chrootdev

Ubuntu-Forum-Team

  • »chrootdev« ist männlich

Beiträge: 2 321

Registrierungsdatum: 04.03.2008

Derivat: Kein Ubuntu-Derivat

Architektur: 64-Bit PC

Desktop: KDE4

Andere Betriebssysteme: Fedora 27

  • Nachricht senden

2

25.03.2008, 11:55

Also so direkt geht das nicht aber du könntest logdateien auf event. felermeldungen überwachen!
"Do or do not. There is no try." (Yoda) || Thread auf gelöst/erledigt setzen

3

25.03.2008, 12:05

Das geht sogar sehr direkt:

Man kann den Rückgabewert prüfen:

Quellcode

1
2
3
4
5
programm
if [ $? -eq 0 ]; then
   echo "Programm erfolgreich"
else
   echo "Programm fehlerhaft"


oder auch kürzer mit:

Quellcode

1
programm || die "Programm fehlerhaft beendet"


Sollte das Programm keinen Return-Code liefern (was nur äußerst selten der Fall ist), kann man noch schauen, ob auf der Fehler-Konsole etwas ausgegeben wurde:

Quellcode

1
2
3
4
5
6
programm 2>&1 >/dev/null | grep -q "."
if [ $? -eq 0 ]; then
   echo "Programm hat eine Fehlermeldung ausgegeben."
else
   echo "Programm hat keine Fehlermeldung ausgegeben."
fi

(man beachte hierbei die Negierung von $?)

Als letzte Alternative kann man eine Endbedingung prüfen: Du kannst auf die Existenz und Korrektheit der Dateien prüfen.

chrootdev

Ubuntu-Forum-Team

  • »chrootdev« ist männlich

Beiträge: 2 321

Registrierungsdatum: 04.03.2008

Derivat: Kein Ubuntu-Derivat

Architektur: 64-Bit PC

Desktop: KDE4

Andere Betriebssysteme: Fedora 27

  • Nachricht senden

4

25.03.2008, 12:51

Das geht sogar sehr direkt:

Man kann den Rückgabewert prüfen:

Quellcode

1
2
3
4
5
programm
if [ $? -eq 0 ]; then
   echo "Programm erfolgreich"
else
   echo "Programm fehlerhaft"

Zitat

Kann man irgendwie ueberpruefen ob ein Programm in einem Shell-Skript korrekt ausgefuehrt wurde?
Das prüft doch nur ob das programm ausgeführt wurde oder nicht, aber nicht ob es "korrekt" ausgeführt wurde, oder irre ich mich da?
"Do or do not. There is no try." (Yoda) || Thread auf gelöst/erledigt setzen

5

25.03.2008, 12:55

Da irrst du dich: $? enthält den "Return Code" (oder status code), den das Programm über die exit() Funktion übergeben kann (=> man exit).

Wenn das Programm nicht gefunden wurde, erzeugt die Shell einen bestimmten Wert in $? - meist ist es 127. Der korrekte Weg das zu prüfen ist aber dann eher which.

  • »Fliegenpilz« ist der Autor dieses Themas

Beiträge: 229

Registrierungsdatum: 01.07.2007

Derivat: Ubuntu

Architektur: 64-Bit PC

Andere Betriebssysteme: Arch

  • Nachricht senden

6

25.03.2008, 14:57

Danke, ich habs eingebaut und extra einen Fehler ausspucken lassen. Es funktioniert :thumbsup:
Intel Core2Quad Q6600 4x 2,4 GHz | 6 GB DDR2 RAM | GF 8600GT 512 MB DDR3 | 80 GB & 500 GB SATA HDD
Samsung SyncMaster 931c 1280x1024 px