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
- 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
- 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?