Дана функция bash:
function f1 {
echo "The function f1 is being called with ??? argument(s)."
}
и два призывания:
f1 arg1
f1 arg1 arg2
Как получить количество переданных аргументов? Желаемый результат:
The function f1 is being called with 1 argument(s).
The function f1 is being called with 2 argument(s).
решение1
Вы можете использовать
$#
см. man bash
для получения дополнительных советов по bash
решение2
Используя специальный аргумент
$#
которая возвращает количество позиционных аргументов, переданных этому вызову оболочки.
От man bash
...
$1 - $9 эти переменные являются позиционными параметрами.
$0 — имя команды, которая в данный момент выполняется.
$# количество позиционных аргументов, переданных этому вызову оболочки.
$? статус выхода последней выполненной команды указан в виде десятичной строки. При успешном завершении команды возвращается статус выхода 0 (ноль), в противном случае возвращается ненулевой статус выхода.
$$ номер процесса этой оболочки — полезно для включения в имена файлов, чтобы сделать их уникальными.
$! идентификатор процесса последней команды, запущенной в фоновом режиме.
$- текущие параметры, предоставленные для данного вызова оболочки.
$* — строка, содержащая все аргументы оболочки, начиная с $1.
$@ то же, что и выше, за исключением случаев, когда указано в кавычках.
Эти специальные аргументы очень полезны для сбора данных о текущей оболочке.