Wie kann ich zwei abfragen in eine until schleife einbinden

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

Wie kann ich zwei abfragen in eine until schleife einbinden

Beitrag von Voyager_MP » 26.08.2004 10:35:49

Code: Alles auswählen

        until [ ! -z $anfang && $anfang -ge "1" ]; do
            anfang="0"
            echo -e -n "Bitte geben sie die Nummer an die den Anfang darstellt [${red}1${NC}]: "
            read anfang
        done
warum geht das nicht ?
Gruß Michel

Benutzeravatar
Voyager_MP
Beiträge: 628
Registriert: 22.06.2004 10:04:07
Wohnort: Aachen

Beitrag von Voyager_MP » 26.08.2004 10:41:16

Code: Alles auswählen

        until [ ! -z $anfang ] && [ $anfang -ge "1" ] ; do
            echo -e -n "Bitte geben sie die Nummer an die den Anfang darstellt [${red}1${NC}]: "
            read anfang
        done
so gehts ;)
Gruß Michel

Benutzeravatar
QT
Beiträge: 1322
Registriert: 22.07.2004 21:08:02
Wohnort: localhost

Beitrag von QT » 26.08.2004 10:42:24

Verknuepfe die beiden Tests mal mit '-a' anstatt mit '&&'. '-a' steht fuer AND und '-o' fuer OR. HTH.

Benutzeravatar
Voyager_MP
Beiträge: 628
Registriert: 22.06.2004 10:04:07
Wohnort: Aachen

Beitrag von Voyager_MP » 26.08.2004 10:58:41

wo liegt der unterschied zu && oder || ?
Gruß Michel

Benutzeravatar
QT
Beiträge: 1322
Registriert: 22.07.2004 21:08:02
Wohnort: localhost

Beitrag von QT » 26.08.2004 11:04:50

Mit '&&' und '||' kannst Du 2 Programmaufrufe verbinden wobei '-a' und '-o' zu dem Shell internen Kommando 'test' gehoeren. Mit Deiner Loesung verknuepfst Du zB 2 getrennte 'test' Aufrufe, mit meiner Loesung hast Du 1 Aufruf vom 'test', welcher 2 Bedingungen via '-a' verknuepft. HTH.....

Benutzeravatar
Voyager_MP
Beiträge: 628
Registriert: 22.06.2004 10:04:07
Wohnort: Aachen

Beitrag von Voyager_MP » 26.08.2004 11:54:44

Code: Alles auswählen

until [ ! -z $ende ] -a [ $ende -gt $anfang ]; do
das tuts aber nicht

und so gehts auch nicht

Code: Alles auswählen

until [ ! -z $ende  -a  $ende -gt $anfang ]; do
Gruß Michel

Benutzeravatar
Savar
Beiträge: 7174
Registriert: 30.07.2004 09:28:58
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Berlin

Beitrag von Savar » 26.08.2004 12:00:39

du solltest noch die Fehlermeldung mit posten..

manchmal hilft bei den "-gt" oder ähnlichen, wenn man die Variablen in "" setzt:

Code: Alles auswählen

until [ ! -z $ende  -a  "$ende" -gt "$anfang" ]; do 
MODVOICE/MYVOICE
Debianforum Verhaltensregeln
Log Dateien? -> NoPaste

Benutzeravatar
Voyager_MP
Beiträge: 628
Registriert: 22.06.2004 10:04:07
Wohnort: Aachen

Beitrag von Voyager_MP » 26.08.2004 12:39:34

leider immer noch nicht .

fehlermeldung:
./barcode-test.sh: line 25: [: too many arguments
End Nummer "MAXIMAL 48 pro seite" [48]:

Code: Alles auswählen

until [ ! -z $ende -a "$ende" -gt "$anfang" ]; do
    echo -e -n "End Nummer \"MAXIMAL 48 pro seite\" [${red}48${NC}]: "
    read ende
done
Gruß Michel

Benutzeravatar
Savar
Beiträge: 7174
Registriert: 30.07.2004 09:28:58
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Berlin

Beitrag von Savar » 26.08.2004 13:14:12

hmm.. was willst du eigentlich mit dem "!" erreichen?

eine negation ist doch eigentlich unsinnig..

es gibt für jeden Test das Gegenstück..

zu "-z" gibt es "-n" und zu "-gt" "-lt"... vielleicht geht es dann?
MODVOICE/MYVOICE
Debianforum Verhaltensregeln
Log Dateien? -> NoPaste

Antworten