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