Positionsparameter

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen

Positionsparameter

Grundprinzip

  • Positionsparameter sind spezielle Shell-Variablen, über die Argumente an ein Skript oder eine Funktion übergeben werden.
  • Jeder übergebene Wert wird automatisch in eine durchnummerierte Variable geschrieben.
  • Diese Variablen sind nur innerhalb der aktuellen Shell-Instanz gültig und werden nicht exportiert.

Wichtige Positionsparameter

Variable Bedeutung
$0 Name des aktuell ausgeführten Skripts oder Befehls
$1 – $9 Erste bis neunte übergebene Argumente
$# Anzahl der übergebenen Argumente
$* Liste aller Argumente (als eine Zeichenkette)
$@ Liste aller Argumente (getrennt, einzeln interpretierbar)
$$ Prozess-ID (PID) der aktuellen Shell
$? Exit-Status des zuletzt ausgeführten Kommandos
$! Prozess-ID des letzten Hintergrundprozesses

Beispiel

#!/bin/bash
echo "Skriptname: $0"
echo "1. Parameter: $1"
echo "2. Parameter: $2"
echo "Anzahl Parameter: $#"
echo "Alle Parameter (als String): $*"
echo "Alle Parameter (getrennt): $@"
echo "Prozess-ID: $$"
echo "Exit-Status des letzten Kommandos: $?"
Aufruf
  • ./test.sh rot gruen blau
Ausgabe
Skriptname: ./test.sh  
1. Parameter: rot  
2. Parameter: gruen  
Anzahl Parameter: 3  
Alle Parameter (als String): rot gruen blau  
Alle Parameter (getrennt): rot gruen blau  
Prozess-ID: 4712  
Exit-Status des letzten Kommandos: 0  

Aufgaben

  • Erstellen Sie ein Skript, das alle übergebenen Parameter mit deren Positionsnummer ausgibt.
  • Ermitteln Sie die Anzahl der Parameter mit $# und geben Sie diese am Ende aus.
  • Fügen Sie in die Ausgabe zusätzlich die PID und den Exit-Status ein.
  • Was passiert, wenn keine Parameter übergeben werden?

Parameterübergabe an Skripte

Grundprinzip

  • Bei der Ausführung eines Skripts können Werte als Parameter übergeben werden.
  • Diese Parameter werden der Reihe nach in die Positionsvariablen $1, $2, ... geschrieben.
  • Parameter können z. B. Dateinamen, Pfade oder Textwerte sein.

Beispiel

#!/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  

shift-Kommando

  • Das Kommando shift verschiebt alle Positionsparameter um eine Stelle nach links.
  • Nach dem Verschieben ist der bisherige zweite Parameter der neue erste usw.
Beispiel
#!/bin/bash
echo "Vor shift: $1 $2 $3"
shift
echo "Nach shift: $1 $2 $3"
Aufruf
  • ./shift.sh eins zwei drei
Ausgabe
Vor shift: eins zwei drei  
Nach shift: zwei drei  

Aufgaben

  • Erstellen Sie ein Skript, das zwei Parameter (Quelle und Ziel) entgegennimmt und deren Pfade ausgibt.
  • Fügen Sie ein shift-Kommando ein und zeigen Sie die Parameter danach erneut an.
  • Testen Sie den Unterschied zwischen $* und $@ bei Übergabe mehrerer Argumente mit Leerzeichen.
  • Wie kann überprüft werden, ob überhaupt Parameter übergeben wurden?