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 bash
Weitere 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.