Wie kann ich die Anzahl der Argumente herausfinden, die tatsächlich an eine Bash-Funktion übergeben werden?

Wie kann ich die Anzahl der Argumente herausfinden, die tatsächlich an eine Bash-Funktion übergeben werden?

Gegeben sei eine Bash-Funktion:

function f1 {
  echo "The function f1 is being called with ??? argument(s)."
  }

und zwei Aufrufe:

f1 arg1
f1 arg1 arg2

Wie kann ich die Anzahl der übergebenen Argumente ermitteln? Gewünschte Ausgabe:

The function f1 is being called with 1 argument(s).    
The function f1 is being called with 2 argument(s).

Antwort1

Sie können

$#

man bashWeitere Bash-Tipps finden Sie unter

Antwort2

Verwenden des speziellen Arguments

$#

Dies gibt die Anzahl der Positionsargumente zurück, die diesem Aufruf der Shell übergeben wurden.

Aus man bash...

$1 – $9, diese Variablen sind die Positionsparameter.

$0 der Name des aktuell ausgeführten Befehls.

$# die Anzahl der Positionsargumente, die diesem Aufruf der Shell übergeben werden.

$? Der Beendigungsstatus des zuletzt ausgeführten Befehls wird als Dezimalzeichenfolge angegeben. Wenn ein Befehl erfolgreich abgeschlossen wird, gibt er den Beendigungsstatus 0 (Null) zurück, andernfalls einen Beendigungsstatus ungleich Null.

$$ die Prozessnummer dieser Shell – nützlich zum Einfügen in Dateinamen, um sie eindeutig zu machen.

$! die Prozess-ID des letzten im Hintergrund ausgeführten Befehls.

$- die aktuellen Optionen, die diesem Aufruf der Shell bereitgestellt werden.

$* eine Zeichenfolge, die alle Argumente für die Shell enthält, beginnend bei $1.

$@ wie oben, außer wenn in Anführungszeichen.

Diese speziellen Argumente sind sehr nützlich, um Daten über die aktuelle Shell zu sammeln.

verwandte Informationen