79 votes

Comment vérifier qu'un paramètre a été fourni à un script bash

Je veux juste vérifier si un paramètre a été fourni dans mon script bash ou non.

J'ai trouvé ceci , mais toutes les solutions semblent être inutilement compliquées.

Quelle est une solution simple à ce problème simple qui aurait du sens pour un débutant ?

107voto

Adam Zalcman Points 13198

Utilisez $# qui est égal au nombre d'arguments fournis, par exemple :

 if [ "$#" -ne 1 ]
then
  echo "Usage: ..."
  exit 1
fi

Attention : notez qu'à l'intérieur d'une fonction, cela sera égal au nombre d'arguments fournis à la fonction plutôt qu'au script.

EDIT : Comme l'a souligné SiegeX dans bash, vous pouvez également utiliser des expressions arithmétiques dans (( ... )) . Cela peut être utilisé comme ceci :

 if (( $# != 1 ))
then
  echo "Usage: ..."
  exit 1
fi

32voto

h7r Points 462

La solution acceptée vérifie si les paramètres ont été définis en testant le nombre de paramètres donnés. S'il ne s'agit pas de la vérification souhaitée, c'est-à-dire si vous souhaitez plutôt vérifier si un paramètre spécifique a été défini , procédez comme suit :

 for i in "$@" ; do
    if [[ $i == "check parameter" ]] ; then
        echo "Is set!"
        break
    fi
done

Ou, de manière plus compacte :

 for i in "$@" ; do [[ $i == "check argument" ]] && echo "Is set!" && break ; done

14voto

jaypal Points 34440
if (( "$#" != 1 )) 
then
    echo "Usage Info:…"
exit 1
fi

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X