Que signifie $#
en shell?
J'ai un code tel que
if [ $# -eq 0 ] then
Je veux comprendre ce que $#
signifie, mais la search Google est très mauvaise pour la search de ce genre de choses.
Vous pouvez toujours vérifier 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 combien de parameters sont donnés avec du code comme ceci:
if [ "$#" -eq 0 ]; then echo "you did not pass any parameter" fi
C'est
le nombre de parameters avec lesquels le script a été appelé
le nombre de parameters qui ont été définis dans le script par set -- foo bar
(lorsqu'il est utilisé dans une fonction) le nombre de parameters avec lesquels une fonction a été appelée (le set
fonctionnerait aussi).
Ceci est expliqué dans la page bash man dans le bloc "Paramètres spéciaux".
Réellement,
`$` refer to `value of` and `#` refer to `number of / total number`
Donc set
`$#` refer to `The value of the total number of command line arguments passed.`
Ainsi, vous pouvez utiliser $#
pour vérifier le nombre d'arguments / parameters passés comme vous l'avez fait et gérer les situations inattendues.
De même, nous avons
`$1` for `value of 1st argument passed` `$2` for 'value of 2nd argument passed`
etc.