ubuntuusers.de

Bashskript mit einfachen Stringvergleich

Status: Gelöst | Ubuntu-Version: Ubuntu 13.04 (Raring Ringtail)
Antworten |

Alci

Avatar von Alci

Anmeldungsdatum:
11. Januar 2009

Beiträge: 991

Wohnort: ~/

Hallo,

ich habe versucht ein Bashskript zu schreiben, dass mir die übergebenen Argumente übergibt und dann in einem neuen Befehl, falls die Argumente zugelassen sind, ausführt.

Ein Minimalbeispiel ist hier: String vergl. im Bashskript m. getopt.

Und die Zeile 21 macht leider nicht das was sie soll. Ich möchte nur eine Eingabe der Argumente Hund und Katze zulassen, wie ist das möglich?

Gruß, Alci

track

Avatar von track

Anmeldungsdatum:
26. Juni 2008

Beiträge: 7174

Wohnort: Wolfen (S-A)

Allein schon wegen der Übersichtlichkeit würde ich die 2. Abfrage auch mit case machen !

Sowas:

    case "$b" in
        Hund )     ;;
        Katze )    ;;
        * )        echo "Folgende Tiere sind getestet:
         Hund
         Katze";;
    esac

Soll das eine Kontrolle sein, ob alle Tiere mal vorgekommen sind ? - sowas habe ich sonst immer mit "abhaken" in einem Array gemacht, das ist mir sympathischer.

LG,

track

Alci

(Themenstarter)
Avatar von Alci

Anmeldungsdatum:
11. Januar 2009

Beiträge: 991

Wohnort: ~/

Genauso klappt es. Vielen Dank. Eine case-Umgebung ist wirklich sinnvoll, wieso bin ich darauf nicht gekommen. ☺ Also es ging einfach darum, dass das Argument nur einen bestimmten Wert annehmen darf, sonst bricht das Skript ab. Und das klappt damit nun.

lorb

Anmeldungsdatum:
6. September 2006

Beiträge: 31

Zum ursprünglichen Code noch ein Kommentar, und zwar zu folgender Zeile. if [ "$b" != "Hund" ] || [ "$b" != "Katze" ]

Dieser vergleich macht vermutlich nicht das was der Autor wollte. || bedeutet ja "oder", das heißt der Gesamtausdruck ist wahr wenn mindestens eine Seit wahr ist. Übersetzt in Worte: Wenn b kein Hund ist ODER wenn b keine Katze ist. Das ist aber immer der Fall da $b ja nicht gleichzeitig Hund und Katze sein kann. Ich denke da sollte ein && sein oder die beiden vergleichen sollen ein == sein statt dem !=.

Antworten |