44 votes

Que se passe-t-il si [ $ ? -eq 0 ] signifie pour les scripts shell ?

Il y a cette ligne dans un script shell que j'ai vu :

 grep -e ERROR ${LOG_DIR_PATH}/${LOG_NAME}  > /dev/null
if [ $? -eq 0 ] 

42voto

Chris Points 19350

Il vérifie la valeur de retour ( $? ) de grep . Dans ce cas, il le compare à 0 (succès).

Habituellement, lorsque vous voyez quelque chose comme ça (en vérifiant la valeur de retour de grep), il vérifie si la chaîne particulière a été détectée. Bien que la redirection vers /dev/null ne soit pas nécessaire, la même chose peut être accomplie en utilisant -q .

3voto

William Pursell Points 56211

C'est un moyen extrêmement galvaudé de vérifier le succès/l'échec d'une commande. En règle générale, l'extrait de code que vous fournissez sera remanié comme suit :

 if grep -e ERROR ${LOG_DIR_PATH}/${LOG_NAME} > /dev/null; then
   ...
fi

(Bien que vous puissiez utiliser 'grep -q' dans certains cas au lieu de rediriger vers /dev/null, cela n'est pas portable. De nombreuses implémentations de grep ne prennent pas en charge l'option -q, donc votre script peut échouer si vous l'utilisez. )

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