Что означает конструкция $ # в bash? [дубликат]

7
задан fedorqui 25 April 2016 в 12:44
поделиться

3 ответа

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

sh-3.2$ cat a.sh
echo $#  #print the number of cmd line args.
sh-3.2$ ./a.sh
0
sh-3.2$ ./a.sh foo
1
sh-3.2$ ./a.sh foo bar
2
sh-3.2$ ./a.sh foo bar baz
3

При использовании внутри функции (как в вашем случае) он представляет количество аргументов, переданных функции:

sh-3.2$ cat a.sh
foo() {
        echo $# #print the number of arguments passed to the function.
}
foo 1
foo 1 2
foo 1 2 3

sh-3.2$ ./a.sh
1
2
3
7
ответ дан 6 December 2019 в 21:08
поделиться

$# — количество аргументов, переданных сценарию. См. полный список в подразделе Special Parameters раздела PARAMETERS справочной страницы bash(1).

3
ответ дан 6 December 2019 в 21:08
поделиться

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

в вашем коде, функция вернет 0, если функция не вызывается с одним параметром хотя бы.

2
ответ дан 6 December 2019 в 21:08
поделиться
Другие вопросы по тегам:

Похожие вопросы: