web-dev-qa-db-fra.com

Que signifie $ # dans le shell?

Qu'est-ce que $# signifie en coquille?

J'ai un code tel que

if [ $# -eq 0 ]
then

Je veux comprendre ce que $# signifie, mais la recherche Google est très mauvaise pour rechercher ce genre de choses.

25
BufBills

Vous pouvez toujours consulter la page de manuel de votre Shell. man bash dit:

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

Par conséquent, un script Shell peut vérifier le nombre de paramètres fournis avec un code comme celui-ci:

if [ "$#" -eq 0 ]; then
  echo "you did not pass any parameter"
fi
37
michas

Réellement,

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

Alors ensemble

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

Ainsi, vous pouvez utiliser $# pour vérifier le nombre d'arguments/paramètres passés comme vous l'avez fait et gérer toutes les situations inattendues.

De même, nous avons

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

etc.

13
sivareddy963

C'est

  1. le nombre de paramètres avec lesquels le script a été appelé

  2. le nombre de paramètres définis dans le script par set -- foo bar

  3. (lorsqu'il est utilisé dans une fonction) le nombre de paramètres avec lesquels une fonction a été appelée (set y fonctionnerait également).

Ceci est expliqué dans la page de manuel bash du bloc "Paramètres spéciaux".

8
Hauke Laging