Skript mit Argumenten

  • Mahlzeit!

    Da hier ja immer wieder von Skripten die Rede ist, will ich mal für jene, die sich damit überhaupt nicht auskennen, eine kleine Idee zeigen, wie man sich selbst mit minimalem Aufwand das Leben leichter machen kann, wenn man denn will.

    Skripte sind ja prinzipiell nichts anderes, als eine Sammlung von Befehlen, die nacheinander abgearbeitet werden sollen. Berühmtestes Beispiel dürfte aus der MS-DOS Ära kommen. Die berühmt berüchtigte autoexec.bat.

    Okay. So ein Skript kann aber auch einfach dafür verwendet werden, um zum Beispiel ein Tool, welches gleich mehrere Argumente haben kann, mit einem Skript zu starten, anstatt immer alles eintippen zu müssen. Ich nehme als Beispiel mal qemu. Aber das geht natürlich auch mit allen anderen Programmen. Um also qemu mit einer Festplatte und einem CD-ROM zu starten würde das so aussehen:

    Code
    qemu-system-x86_64 -m 2048 -hda festplatte.img -cdrom setup.iso -boot d -enable-kvm -cpu host -smp 2

    Es geht jetzt nicht um die gezeigten Parameter, es ist nur ein Beispiel. Das könnte man dann jedes Mal genau so im Terminal eintippen. Aber, wer will das schon? Also kann man sich mit einem Skript helfen.

    Bash
    #!/bin/bash
    qemu-system-x86_64 -m 2048 -hda festplatte.img -cdrom setup.iso -boot d -enable-kvm -cpu host -smp 2

    Das könnte man jetzt als "startQEMU.sh" abspeichern. Wichtig ist dann, dass man das noch ausführbar macht. Also

    Code
    chmod +x startQEMU.sh

    Jetzt tippt man nur noch ./startQEMU.sh ein und das Ding läuft.

    Aber, es ist doch schon etwas statisch. Was, wenn man verschiedene Festplatten hat und nicht immer die Gleiche starten will? Oder wenn man verschiedene ISOs hat? Es wäre doch toll, wenn man beim starten des Skripts die Festplatte und/oder die ISO angeben könnte. Kann man auch und das ist total simpel. Wir müssen nur zwei Kleinigkeiten im Skript ändern und das sieht dann so aus:

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

    Jetzt startet man das Skript dann ganz einfach, mit der Angabe der entsprechenden Argumente.

    Code
    ./startQEMU.sh arch.img arch.iso
    ./startQEMU.sh void.img void.iso
    ./startQEMU.sh debian.img debian.iso

    Wie man wohl richtig vermutet, $1 wird dann mit dem ersten Argument ersetzt, $2 mit dem zweiten. Natürlich kann man auch nur 1 Argument voraussetzen oder 20. Je nach Bedarf.

    Für mich war genau das ein guter Startpunkt. Ich konnte meine Tools mit den Argumenten starten, die ich haben wollte und der ganze Rest kam einfach über das Skript. Alleine damit kann man sich das Leben oft schon sehr erleichtern. Ich benutze das heute noch für ffmpeg und diverse andere Dinge.

    Das ist aber quasi das Minimum, was man da machen kann. Hier könnte man zum Beispiel noch eine Prüfung einbauen, ob wirklich 2 Argumente übergeben wurden und wenn nicht eine Meldung ausgeben. Oder, wenn nur ein Argument übergeben wird, im Skript dann das CD-ROM weg lassen. Ich denke aber, für einen kleinen Start reicht das schon aus. Wer das mal ausprobiert hat wird selbst merken, ob ihm diese Vorgehensweise schon reicht, wie bei mir oder ob er es doch eleganter mit Prüfungen und Reaktionen darauf haben will.

    Wenn Interesse besteht, kann ich gerne noch ein paar kurze Erklärungen zusammen basteln. Oder ein anderer Skripter hier ergänzt das, fände ich auch spannend.

  • 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!