1

Учитывая функцию 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).

2 ответа2

2

Ты можешь использовать

$#

см man bash для получения дополнительных советов Bash

0

Используя специальный аргумент

$#

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

От man bash ...

$ 1 - $ 9 эти переменные являются позиционными параметрами.

$ 0 имя команды, выполняемой в данный момент.

$ # количество позиционных аргументов, переданных этому вызову оболочки.

$? статус выхода последней выполненной команды задается в виде десятичной строки. Когда команда завершается успешно, она возвращает состояние выхода 0 (ноль), в противном случае она возвращает ненулевое состояние выхода.

$$ номер процесса этой оболочки - полезно для включения в имена файлов, чтобы сделать их уникальными.

$! идентификатор процесса последней команды, запущенной в фоновом режиме.

$ - текущие параметры, предоставленные для этого вызова оболочки.

$ * строка, содержащая все аргументы оболочки, начиная с $ 1.

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

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .