Как узнать количество аргументов, которые фактически передаются функции bash?

Как узнать количество аргументов, которые фактически передаются функции bash?

Дана функция 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.

$@ то же, что и выше, за исключением случаев, когда указано в кавычках.

Эти специальные аргументы очень полезны для сбора данных о текущей оболочке.

Связанный контент