Parameterübergabe an Skripte
Grundprinzip
- Beim Aufruf eines Shell-Skripts können Werte als Parameter übergeben werden.
- Diese Parameter werden automatisch den sogenannten Positionsvariablen $1, $2, $3 usw. zugewiesen.
- $0 enthält den Namen des aufgerufenen Skripts.
- Parameter ermöglichen es, Skripte flexibel zu gestalten, ohne Werte fest in den Code einzutragen.
- Beispiel
→ übergibt zwei Parameter: Quelle = /etc, Ziel = /tmp
Zugriff auf Parameter
- Innerhalb des Skripts werden die Parameter mit $1, $2, … angesprochen.
- Die Shell ersetzt diese Platzhalter beim Ausführen des Skripts durch die tatsächlich übergebenen Werte.
- Beispielskript
#!/bin/bash
echo "Backup-Quelle: $1"
echo "Backup-Ziel: $2"
tar czf "$2/backup.tgz" "$1"
- Aufruf
- Ausgabe
Backup-Quelle: /etc
Backup-Ziel: /tmp
Überprüfung der Parameteranzahl
- Bevor Parameter genutzt werden, sollte geprüft werden, ob genügend Argumente übergeben wurden.
- Dies verhindert Fehlermeldungen durch fehlende Eingaben.
- Beispiel
#!/bin/bash
if [ $# -lt 2 ]; then
echo "Fehler: Es müssen zwei Parameter übergeben werden!"
echo "Aufruf: $0 <Quelle> <Ziel>"
exit 1
fi
echo "Backup wird erstellt..."
tar czf "$2/backup.tgz" "$1"
Übergabe mehrerer Parameter
- $* und $@ enthalten alle übergebenen Parameter.
- Unterschied:
- $* fasst alle Argumente zu einem einzigen String zusammen.
- $@ behandelt jedes Argument als separates Wort (besser bei Schleifen geeignet).
- Beispiel
#!/bin/bash
echo "Alle Parameter mit \$*: $*"
echo "Alle Parameter mit \$@: $@"
- Aufruf
- ./multi.sh eins "zwei drei" vier
- Ausgabe
Alle Parameter mit $*: eins zwei drei vier
Alle Parameter mit $@: eins zwei drei vier
shift-Kommando
- Das Kommando shift verschiebt alle Positionsparameter um eine Stelle nach links.
- $2 wird zu $1, $3 wird zu $2 usw.
- Nach dem letzten Parameter sind alle Variablen leer.
- Beispiel
#!/bin/bash
echo "Vor shift: $1 $2 $3"
shift
echo "Nach shift: $1 $2 $3"
- Aufruf
- ./shift.sh rot gruen blau
- Ausgabe
Vor shift: rot gruen blau
Nach shift: gruen blau
Zusammenfassung
- Parameter machen Skripte flexibel und wiederverwendbar.
- $1, $2 usw. enthalten die übergebenen Argumente.
- Mit $# lässt sich die Anzahl der Parameter prüfen.
- shift kann verwendet werden, um Parameter schrittweise abzuarbeiten.
Aufgaben
- Erstellen Sie ein Skript info.sh, das mindestens zwei Parameter erwartet und diese ausgibt.
- Ergänzen Sie eine Abfrage, die eine Fehlermeldung zeigt, wenn zu wenige Parameter übergeben werden.
- Erstellen Sie ein Skript, das alle übergebenen Parameter in einer Schleife ausgibt.
- Verwenden Sie shift, um jeden Parameter einzeln nacheinander zu verarbeiten.
- Untersuchen Sie den Unterschied zwischen $* und $@ bei Übergabe von Argumenten mit Leerzeichen.