ausgabe wenn befehl bestimmten text nicht enthält

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
OldGod78
Beiträge: 190
Registriert: 20.04.2016 20:59:51
Kontaktdaten:

ausgabe wenn befehl bestimmten text nicht enthält

Beitrag von OldGod78 » 20.12.2016 11:22:50

hallo , ich will dass ich hier eine echo ausgabe bekomme wenn in screen -ls NICHT server1 vorkommt also dieser screen nicht an ist ... wie heißt das dann richtig ? != bedeutet ja es muss was anderes als server1 dort stehen ... :/ ich denke brauche was anderes als das !=

Code: Alles auswählen

#!/bin/sh

if [ "`screen -ls`" != "server1" ]; then
	echo aa;
fi
exit
auch das geht nicht :

Code: Alles auswählen

if [ "`screen -ls`" == *"server1"* ]; then
erhalte

Code: Alles auswählen

: unexpected operator

Benutzeravatar
Meillo
Moderator
Beiträge: 8813
Registriert: 21.06.2005 14:55:06
Wohnort: Balmora
Kontaktdaten:

Re: ausgabe wenn befehl bestimmten text nicht enthält

Beitrag von Meillo » 20.12.2016 11:29:50

Was du in deinem Code machst ist ein Vergleich von zwei Werten. Im Text schreibst du aber von ``enthaelt''. Um das Enhalten zu pruefen musst du grep(1) (fuer Nichtenthalten `grep -v') verwenden (oder Globbing mit dem case-Statement).

Wenn ich mir dein Problem anschaue, dann willst du aber eher darauf pruefen, dass die Suche nach ``server1'' in der Ausgabe von ``screen -ls'' die leere Menge ergibt. Das machst du z.B. so:

Code: Alles auswählen

if [ -z "`screen -ls | fgrep server1`" ] ; then
    echo "Kein server1 enthalten"
fi

Edit:
Mit case geht's so:

Code: Alles auswählen

case "`screen -ls`" in
*server1*)
    ;;
*)
    echo "Kein server1 enthalten"
    ;;
esac
(Das test-Kommando ([) kann kein Pattern-Matching, bloss Stringvergleiche.)
Use ed once in a while!

OldGod78
Beiträge: 190
Registriert: 20.04.2016 20:59:51
Kontaktdaten:

Re: ausgabe wenn befehl bestimmten text nicht enthält

Beitrag von OldGod78 » 20.12.2016 13:51:12

ah danke

Antworten