web-dev-qa-db-fra.com

Comment trouver le nombre d'arguments transmis à un script Bash?

Comment trouver le nombre d'arguments transmis à un script Bash?

C'est ce que j'ai actuellement:

#!/bin/bash
i=0
for var in "$@"
do
  i=i+1
done

Y a-t-il d'autres (meilleurs) moyens de le faire?

163
sabri

Le nombre d'arguments est $#

Recherchez-le sur cette page pour en savoir plus: http://tldp.org/LDP/abs/html/internalvariables.html#ARGLIST

260
zsalzbank
#!/bin/bash
echo "The number of arguments is: $#"
a=${@}
echo "The total length of all arguments is: ${#a}: "
count=0
for var in "$@"
do
    echo "The length of argument '$var' is: ${#var}"
    (( count++ ))
    (( accum += ${#var} ))
done
echo "The counted number of arguments is: $count"
echo "The accumulated length of all arguments is: $accum"
96
Dennis Williamson

pour ajouter la référence d'origine:

Vous pouvez obtenir le nombre d'arguments à partir du paramètre spécial $#. La valeur 0 signifie "pas d'argument". $# est en lecture seule.

Utilisé conjointement avec shift pour le traitement des arguments, le paramètre spécial $# est décrémenté à chaque exécution de Bash Builtin shift.

voir Manuel de référence Bash dans la section .4.2 Paramètres spéciaux :

  • "Le shell traite spécialement plusieurs paramètres. Ces paramètres peuvent uniquement être référencés "

  • et dans cette section pour le mot clé $ # "Se développe en nombre de paramètres de position en décimal."

7
Michael Brux

Ci-dessous, la plus facile -

chat countvariable.sh

echo "$@" |awk '{for(i=0;i<=NF;i++); print i-1 }'

Sortie:

#./countvariable.sh 1 2 3 4 5 6
6
#./countvariable.sh 1 2 3 4 5 6 Apple orange
8
0
VIPIN KUMAR