Что $#
значит в оболочке?
У меня есть такой код
if [ $# -eq 0 ]
then
Я хочу понять, что это $#
значит, но поиск в Google очень плох для поиска подобных вещей.
Что $#
значит в оболочке?
У меня есть такой код
if [ $# -eq 0 ]
then
Я хочу понять, что это $#
значит, но поиск в Google очень плох для поиска подобных вещей.
Ответы:
Вы всегда можете проверить справочную страницу вашей оболочки. man bash
говорит:
Special Parameters
# Expands to the number of positional parameters in decimal.
Поэтому сценарий оболочки может проверить, сколько параметров передается с помощью кода, подобного следующему:
if [ "$#" -eq 0 ]; then
echo "you did not pass any parameter"
fi
man
почти все, включая man
себя. Также попробуйте apropos
некоторое время.
info
либо для справочной страницы, либо дополнительную информацию (очень детализированную и разрозненную), если в пакетах их есть
На самом деле,
`$` refer to `value of` and
`#` refer to `number of / total number`
Так вместе
`$#` refer to `The value of the total number of command line arguments passed.`
Таким образом, вы можете использовать $#
для проверки количества переданных аргументов / параметров, как вы это сделали, и обрабатывать любые непредвиденные ситуации.
Точно так же мы имеем
`$1` for `value of 1st argument passed`
`$2` for 'value of 2nd argument passed`
и т.п.
То есть
количество параметров, с которыми был вызван скрипт
количество параметров, которые были установлены в скрипте set -- foo bar
(при использовании внутри функции) количество параметров, с которыми была вызвана функция (также set
будет работать там).
Это объясняется на странице руководства bash в блоке «Специальные параметры».