Parameterübergabe an Skripte: Unterschied zwischen den Versionen

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen
(Die Seite wurde neu angelegt: „= Parameterübergabe an Skripte = == Grundprinzip == *Beim Aufruf eines Shell-Skripts können Werte als Parameter übergeben werden. *Diese Parameter werden…“)
 
 
(Eine dazwischenliegende Version desselben Benutzers wird nicht angezeigt)
Zeile 49: Zeile 49:
 
*'''$*''' und '''$@''' enthalten alle übergebenen Parameter.   
 
*'''$*''' und '''$@''' enthalten alle übergebenen Parameter.   
 
*Unterschied:
 
*Unterschied:
  ** '''$*''' fasst alle Argumente zu einem einzigen String zusammen.   
+
** '''$*''' fasst alle Argumente zu einem einzigen String zusammen.   
  ** '''$@''' behandelt jedes Argument als separates Wort (besser bei Schleifen geeignet).   
+
** '''$@''' behandelt jedes Argument als separates Wort (besser bei Schleifen geeignet).   
  
 
;Beispiel
 
;Beispiel
Zeile 64: Zeile 64:
 
;Ausgabe
 
;Ausgabe
 
  Alle Parameter mit $*: eins zwei drei vier   
 
  Alle Parameter mit $*: eins zwei drei vier   
  Alle Parameter mit $@: eins zwei drei vier
+
  Alle Parameter mit $@: eins zwei drei vier
  
 
== shift-Kommando ==
 
== shift-Kommando ==
Zeile 93: Zeile 93:
  
 
== Aufgaben ==
 
== Aufgaben ==
*Erstellen Sie ein Skript '''info.sh''', das mindestens zwei Parameter erwartet und beide ausgibt.   
+
*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.   
 
*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.   
 
*Erstellen Sie ein Skript, das alle übergebenen Parameter in einer Schleife ausgibt.   
 
*Verwenden Sie '''shift''', um jeden Parameter einzeln nacheinander zu verarbeiten.   
 
*Verwenden Sie '''shift''', um jeden Parameter einzeln nacheinander zu verarbeiten.   
 
*Untersuchen Sie den Unterschied zwischen '''$*''' und '''$@''' bei Übergabe von Argumenten mit Leerzeichen.
 
*Untersuchen Sie den Unterschied zwischen '''$*''' und '''$@''' bei Übergabe von Argumenten mit Leerzeichen.

Aktuelle Version vom 25. November 2025, 12:54 Uhr

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.