LU05c - Parameter und Argumente

Shell Prog: Kapitel 3.1 - 3.3

In Bash werden Parameter und Argumente verwendet, um Daten an Skripte oder Funktionen zu übergeben. Sie ermöglichen es, Skripte dynamisch zu gestalten und Eingaben zur Laufzeit zu verarbeiten.

Parameter

Ein Parameter ist ein Platzhalter, der mit einem Wert (Argument) gefüllt wird. Parameter können positionsbasiert oder speziell sein:

Positionsparameter

Besondere Parameter

  $#: Anzahl der übergebenen Argumente.
  $@: Liste aller Argumente (als separate Einträge).
  $*: Liste aller Argumente (als eine Zeichenkette).
  $$: Prozess-ID des aktuellen Skripts.
  $?: Exit-Status des zuletzt ausgeführten Befehls.

Argumente

Argumente sind die tatsächlichen Werte, die beim Aufruf eines Skripts oder einer Funktion an die Parameter übergeben werden.

Beispiel:

bash mein_skript.sh Hallo Welt

Beispiel für Parameter und Argumente

#!/bin/bash
echo "Skriptname: $0"
echo "Erstes Argument: $1"
echo "Zweites Argument: $2"
echo "Anzahl der Argumente: $#"
echo "Alle Argumente (einzeln): $@"
echo "Alle Argumente (als Zeichenkette): $*"

Ausführung

bash mein_skript.sh Hallo Welt

Erklärung der Ausgabe

Skriptname: mein_skript.sh     # Name des Skripts ($0)
Erstes Argument: Hallo         # Erstes Argument ($1)
Zweites Argument: Welt         # Zweites Argument ($2)
Anzahl der Argumente: 2        # Anzahl der Argumente ($#)
Alle Argumente (einzeln): Hallo Welt   # Alle Argumente ($@)
Alle Argumente (als Zeichenkette): Hallo Welt   # Alle Argumente als eine Zeichenkette ($*)

Unterschiede zwischen $@ und $*

Ausdruck Bedeutung
$@ Jedes Argument als separates Element.
$* Alle Argumente als eine einzige Zeichenkette.

Beispiel zur Verdeutlichung:

#!/bin/bash
for arg in "$@"; do
  echo "Argument (mit \$@): $arg"
done
 
for arg in "$*"; do
  echo "Argument (mit \$*): $arg"
done

Ausführung mit:

bash mein_skript.sh "Hallo Welt" Test

Ergebnis:

Argument (mit $@): Hallo Welt
Argument (mit $@): Test
Argument (mit $*): Hallo Welt Test

Zusammenfassung

Mit diesen Tools können Sie Skripte schreiben, die flexibel auf Benutzer- oder Systemeingaben reagieren.


Marcel Suter