O que $#
significa com casca?
Eu tenho código como
if [ $# -eq 0 ]
then
Quero entender o que $#
significa, mas a pesquisa no Google é muito ruim para pesquisar esse tipo de coisa.
O que $#
significa com casca?
Eu tenho código como
if [ $# -eq 0 ]
then
Quero entender o que $#
significa, mas a pesquisa no Google é muito ruim para pesquisar esse tipo de coisa.
Respostas:
Você sempre pode verificar a página de manual 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
man
quase tudo, inclusive man
ele próprio. Também tente apropos
algum tempo.
info
a página de manual ou informações adicionais (muito detalhadas e compartimentadas) se os pacotes tiverem alguma coisa
Na realidade,
`$` refer to `value of` and
`#` refer to `number of / total number`
Tã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ê e lidar com qualquer situação inesperada.
Da mesma forma, temos
`$1` for `value of 1st argument passed`
`$2` for 'value of 2nd argument passed`
etc.
Isso é
o número de parâmetros com os quais o script foi chamado
o número de parâmetros que foram definidos no script por set -- foo bar
(quando usado em 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 página de manual do bash no bloco "Parâmetros especiais".