Ich sehe
foo() {
if [[ $# -lt 1 ]]; then
return 0
fi
...
}
Was es mithilfe $ # genau vergleicht, wie sie es tut?
Ich sehe
foo() {
if [[ $# -lt 1 ]]; then
return 0
fi
...
}
Was es mithilfe $ # genau vergleicht, wie sie es tut?
$#
repräsentiert die Anzahl der Befehlszeilenargumente, die an das Skript übergeben werden.
sh-3.2$ cat a.sh
echo $# #print the number of cmd line args.
sh-3.2$ ./a.sh
0
sh-3.2$ ./a.sh foo
1
sh-3.2$ ./a.sh foo bar
2
sh-3.2$ ./a.sh foo bar baz
3
Wenn innerhalb einer Funktion (wie in Ihrem Fall) verwendet es stellt die Anzahl der Argumente an die Funktion übergeben:
sh-3.2$ cat a.sh
foo() {
echo $# #print the number of arguments passed to the function.
}
foo 1
foo 1 2
foo 1 2 3
sh-3.2$ ./a.sh
1
2
3
$#
ist die Anzahl der Argumente, die an das Skript übergeben werden. Siehe die Spezialparameter Unterabschnitt der PARAMETERS Abschnitt der bash(1)
Man-Seite für die vollständige Liste.
$#
= Anzahl der an die Funktion übergebenen Argumente.
In Ihrem Code gibt die Funktion 0 zurück, wenn die Funktion nicht mit einem Parameter mindestens aufgerufen wird.