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?
Le nombre d'arguments est $#
Recherchez-le sur cette page pour en savoir plus: http://tldp.org/LDP/abs/html/internalvariables.html#ARGLIST
#!/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"
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."
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