O que $ # significa no shell?

22

O que significa $# no shell?

Eu tenho código como

if [ $# -eq 0 ]
then

Eu quero entender o que $# significa, mas a pesquisa do Google é muito ruim para pesquisar esse tipo de coisa.

    
por BufBills 31.03.2014 / 07:30

3 respostas

35

Você sempre pode verificar a página man do seu shell. man bash diz:

Special Parameters
   #      Expands to the number of positional parameters in decimal.

Portanto, um script de shell pode verificar quantos parâmetros são fornecidos com código como este:

if [ "$#" -eq 0 ]; then
  echo "you did not pass any parameter"
fi
    
por 31.03.2014 / 07:35
10

Na verdade,

'$' refer to 'value of' and
'#' refer to 'number of / total number'

Então, juntos

'$#' refer to 'The value of the total number of command line arguments passed.'

Assim, você pode usar $# para verificar o número de argumentos / parâmetros passados como você fez e lidar com situações inesperadas.

Semelhantemente, temos o

'$1' for 'value of 1st argument passed'
'$2' for 'value of 2nd argument passed'

etc.

    
por 04.04.2014 / 12:57
8

Isso é

  1. o número de parâmetros com os quais o script foi chamado

  2. o número de parâmetros que foram definidos no script por set -- foo bar

  3. (quando usado dentro de uma função) o número de parâmetros com os quais uma função foi chamada ( set também funcionaria lá).

Isso é explicado na man page bash do bloco "Parâmetros Especiais".

    
por 31.03.2014 / 07:44