Что $#значит в оболочке?
У меня есть такой код
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 в блоке «Специальные параметры».