Mit test die Ausführung zweier Befehle überprüfen

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
Seifenverkäufer
Beiträge: 41
Registriert: 09.07.2004 10:12:33

Mit test die Ausführung zweier Befehle überprüfen

Beitrag von Seifenverkäufer » 01.05.2006 12:32:34

Mahlzeit Debianer,

helft mir mal bitte auf die Sprünge. Ist das syntaktisch so ok?

Code: Alles auswählen

if [ `ping -c3 $ip >/dev/null 2> /dev/null` -o `ps -A | grep backup` ]
then
  exit
else
  /usr/local/sbin/umount_cryptdevices.sh
  logger "CRYPT: Verschlüsselung aktiviert"
fi
Obwohl die IP-Adresse nicht mehr erreichbar ist und kein Prozess mit "backup" läuft, geht er nicht in den "else"-Teil.
Test überprüft doch, ob Rückgabewert=0?
Wenn ich die Befehle einzeln auf der Shell absetze, bekomme ich immer einen Rückgabewert != 0.
Evtl. Anführungszeichen durch Backticks ersetzen?
Danke und Gruß,

Tyler

gms
Beiträge: 7798
Registriert: 26.11.2004 20:08:38
Lizenz eigener Beiträge: MIT Lizenz

Beitrag von gms » 01.05.2006 16:50:01

dafür brauchst du das test Programm nicht:
probiers mal so:

Code: Alles auswählen

if ping -c3 $ip >/dev/null 2> /dev/null || ps -A | grep backup
then
  exit
else
  /usr/local/sbin/umount_cryptdevices.sh
  logger "CRYPT: Verschlüsselung aktiviert"
fi
Gruß
gms

Seifenverkäufer
Beiträge: 41
Registriert: 09.07.2004 10:12:33

Beitrag von Seifenverkäufer » 01.05.2006 20:32:56

Nabend gms,

vielen Dank, so funzts einwandfrei.
Mich würde natürlich trotzdem interessieren, wie's mit test funktioniert hätte.
Falls es jemand weiss, bitte nicht scheuen zu posten.
Danke nochmals für deine Hilfe und schönen Abend noch.
Cruz,

Tyler

gms
Beiträge: 7798
Registriert: 26.11.2004 20:08:38
Lizenz eigener Beiträge: MIT Lizenz

Beitrag von gms » 01.05.2006 20:39:39

Mit test kannst du Ausdrücke mit Zeichenketten, Ganzzahlen und Dateien überprüfen. Das Programm liefert dann einen entsprechenden Rückgabewert, der dann von der if Anweisung ausgewertet wird.
Den Rückgabewert von ping hast du ja schon, wozu solltest du da noch test benötigen ?


Gruß
gms

Seifenverkäufer
Beiträge: 41
Registriert: 09.07.2004 10:12:33

Beitrag von Seifenverkäufer » 01.05.2006 20:47:08

Nee ok, dann habe ich das falsch verstanden. Dachte einfach, dass test unbedingt benötigt würde, um den Rückgabewert eines Programms abzufragen.
Aber wenn das einfach mit logischen Operatoren geht, umso besser.
Danke für die Aufklärung ;-)
Cruz,

Tyler

Antworten