Was $#heißt in der Schale?
Ich habe Code wie
if [ $# -eq 0 ]
then
Ich möchte verstehen, was das $#bedeutet, aber die Google-Suche ist für die Suche nach solchen Dingen sehr schlecht.
Was $#heißt in der Schale?
Ich habe Code wie
if [ $# -eq 0 ]
then
Ich möchte verstehen, was das $#bedeutet, aber die Google-Suche ist für die Suche nach solchen Dingen sehr schlecht.
Antworten:
Sie können jederzeit die Manpage Ihrer Shell überprüfen. man bashsagt:
Special Parameters
# Expands to the number of positional parameters in decimal.
Daher kann ein Shell-Skript überprüfen, wie viele Parameter mit Code wie folgt angegeben werden:
if [ "$#" -eq 0 ]; then
echo "you did not pass any parameter"
fi
manfast alles, auch sich manselbst. Probieren Sie auch aproposetwas Zeit.
infoentweder für die Manpage oder zusätzliche Informationen (sehr detailliert und unterteilt) verwenden, wenn die Pakete einige haben
Tatsächlich,
`$` refer to `value of` and
`#` refer to `number of / total number`
Also zusammen
`$#` refer to `The value of the total number of command line arguments passed.`
Auf diese Weise können Sie $#die Anzahl der übergebenen Argumente / Parameter überprüfen und unerwartete Situationen behandeln.
Ebenso haben wir
`$1` for `value of 1st argument passed`
`$2` for 'value of 2nd argument passed`
etc.
Das ist
die Anzahl der Parameter, mit denen das Skript aufgerufen wurde
die Anzahl der Parameter, die innerhalb des Skripts von eingestellt wurden set -- foo bar
(bei Verwendung innerhalb einer Funktion) Die Anzahl der Parameter, mit denen eine Funktion aufgerufen wurde ( setwürde auch dort funktionieren).
Dies wird in der bash-Manpage im Block "Special Parameters" erläutert.