Skript mit Argument-Prüfung

  • Mahlzeit!

    Nachdem wir ja beim ersten Mal gelernt haben, wie man einem Skript Argumente übergibt, schauen wir uns jetzt mal an, wie man diese Argumente überprüfen kann und darauf reagiert.

    Das ursprüngliche Skript sieht so aus:

    Bash
    #!/bin/bash
    qemu-system-x86_64 -m 2048 -hda $1 -cdrom $2 -boot d -enable-kvm -cpu host -smp 2

    Übergibt man nur ein Argument an das Skript, wir qemu entweder eine Fehlermeldung ausgeben oder mir einem leeren CD-ROM starten. Da es jetzt nicht um qemu geht, spielt das jetzt aber weniger eine Rolle. Wichtig ist eben, wenn zwei Argumente erwartet werden, sollten auch zwei übergeben werden. Im vorliegenden Beispiel ist es durchaus möglich, dass man auf das CD-ROM verzichten will. Vielleicht nach der Installation braucht man die ISO einfach nicht mehr. Will man aber zum Beispiel mit ffmpeg etwas konvertieren, wird zwingend ein Input- und ein Output-File erwartet. Es müssen also beide Argumente übergeben werden und das prüfen wir jetzt.

    Bash
    #!/bin/bash
    
    if [[ $# -lt 2 ]]; then
      echo "Usage: $0 <Festplattendatei> <CD/DVD Image>"
      exit 1
    fi
    
    qemu-system-x86_64 -m 2048 -hda $1 -cdrom $2 -boot d -enable-kvm -cpu host -smp 2

    Mit if leiten wir die Abfrage ein. $# gibt die Anzahl der Argumente zurück und wenn die nicht 2 ist (was mit -lt also less then geprüft wird), wird die Abfrage ausgelöst. Wenn $# 2 ist, dann geht es sofort mit qemu weiter.

    Mit echo lassen wir etwas im Terminal ausgeben. In dem Fall eben, was an Argumenten erwartet wird. Danach wird exit ausgelöst, was das Programm beendet. Also qemu wird gar nicht gestartet. Was man jetzt bei echo schreibt, spielt keine wirkliche Rolle. Es sollte eben die Informationen liefern, die einem weiterhelfen können. Mit $0 gibt man den Namen des aufgerufenen Skriptes aus.

    Damit kann man dann ein Skript auf eine bestimmte Anzahl Argumente prüfen, die zwingend erforderlich sind.

    Jetzt schauen wir uns an, wie man bei der Prüfung verschiedene Aktionen startet.

    Im Gegensatz zur ersten Variante, verwenden wir hier -eq für equal, also gleich. Es wird also geprüft, ob überhaupt Argumente vergeben wurde und wenn nicht, wird angezeigt, wie der korrekte Aufruf aussehen muss.

    -eq 1 startet dann qemu ohne -cdrom, während -eq 2 qemu mit CD-ROM startet,

    Minimalistisch, aber funktional.

  • Dieses Thema enthält 5 weitere Beiträge, die nur für registrierte Benutzer sichtbar sind.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!