Я вижу
foo() {
if [[ $# -lt 1 ]]; then
return 0
fi
...
}
Что именно это сравнение с помощью $ #, как это делает там?
Я вижу
foo() {
if [[ $# -lt 1 ]]; then
return 0
fi
...
}
Что именно это сравнение с помощью $ #, как это делает там?
$#
представляет количество аргументов командной строки передано в скрипт.
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
При использовании внутри функции (как в вашем случае) представляет количество аргументов, переданных функции:
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
$#
- количество аргументов, переданных скрипту. См. Специальные параметры подраздел ПАРАМЕТРЫ раздел справочной страницы bash(1)
для полного списка.
$#
= Количество аргументов, переданных функции.
в вашем коде функция вернет 0, если функция не вызывается с одного параметра не менее.