Parameterübergabe an Skripte

Aus Xinux Wiki
Version vom 25. November 2025, 12:54 Uhr von Thomas.will (Diskussion | Beiträge) (→‎Aufgaben)
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)
Zur Navigation springen Zur Suche springen

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
  • ./backup.sh /etc /tmp
 → ü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
  • ./backup.sh /etc /tmp
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.