Qu’est ce que $? var in script ci-dessous sous condition de la boucle while

#!/bin/sh host google.com>/dev/null while [ $? -ne 0 ]; do sleep 3 done say "You are now connected to internet" 

Je suppose que $? est associé à google.com> / dev / null, faisant fonctionner la logique, mais je suis intéressé par une description détaillée sur $?

Merci d’avance.

Je sais que cela va paraître pédant, mais $? n’est pas une variable, c’est une valeur. ? est le nom de la variable, en plaçant $ à l’avant donne la valeur.

Maintenant, vous pouvez rechercher ? dans l’ man bash :

Développe le statut de sortie du pipeline de premier plan le plus récemment exécuté.

Il est souvent testé inutilement. if instructions if et while dans bash (et la plupart des shells) testent le succès (true) ou l’échec (false). Le succès est où la valeur de ? est 0, et échec quand il s’agit d’un autre nombre (qui a l’intervalle 1-255). ! signifie “non”, comme dans beaucoup de langues, et inverse la vérité:

 while ! host google.com>/dev/null do sleep 3 done echo "You are now connected to internet" 

(Je devais utiliser echo , je ne sais pas d’où vient say , Perl?)