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:
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.
#!/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
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:
Jetzt startet man das Skript dann ganz einfach, mit der Angabe der entsprechenden Argumente.
./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.