Что $#
значит в оболочке?
У меня есть такой код
if [ $# -eq 0 ]
then
Я хочу понять, что это $#
значит, но поиск в Google очень плох для поиска подобных вещей.
shell
shell-script
BufBills
источник
источник
Ответы:
Вы всегда можете проверить справочную страницу вашей оболочки.
man bash
говорит:Поэтому сценарий оболочки может проверить, сколько параметров передается с помощью кода, подобного следующему:
источник
man
почти все, включаяman
себя. Также попробуйтеapropos
некоторое время.info
либо для справочной страницы, либо дополнительную информацию (очень детализированную и разрозненную), если в пакетах их естьНа самом деле,
Так вместе
Таким образом, вы можете использовать
$#
для проверки количества переданных аргументов / параметров, как вы это сделали, и обрабатывать любые непредвиденные ситуации.Точно так же мы имеем
и т.п.
источник
То есть
количество параметров, с которыми был вызван скрипт
количество параметров, которые были установлены в скрипте
set -- foo bar
(при использовании внутри функции) количество параметров, с которыми была вызвана функция (также
set
будет работать там).Это объясняется на странице руководства bash в блоке «Специальные параметры».
источник