2010-04-23 4 views

Répondre

8

Ci-dessous exécute la fonction d'enveloppe ou exécutable dans $PATH nommé IsServerStarted, et si son code de sortie est 0 (à savoir true), exécute la branche then. Si une telle fonction ou un tel exécutable n'existe pas, le code de sortie sera non 0 (c'est-à-dire faux) et la branche then sera ignorée.

if IsServerStarted ; then ... 

Ce qui suit a [ (alias test) vérifier si IsServerStarted est un nombre entier égal à 0, qui (IsServerStarted même pas contenant un seul chiffre) est toujours faux . Ainsi, [ se termine avec un code non 0 (c'est-à-dire faux) et la branche then est toujours ignorée.

if [ IsServerStarted -eq 0 ] ; then ... 
0

En fait, le second donnera une erreur se plaignant que « IsServerStarted » n'est pas un entier valide. Il est considéré comme une constante de chaîne de sorte que quelque chose comme

var="IsServerStarted" 
if [ IsServerStarted == "$var" ] ; then 

réussirait (ou échouera s'il n'était pas égal).

ndim est correct en ce qui concerne l'exécutable ou la fonction dans le premier exemple que vous avez donné.

Un couple plus de variations à considérer:

if $IsServerStarted ; then ... 

Dans celle-ci, la if est évaluée sur la base de la valeur de retour d'une commande (exécutable ou une fonction) qui est contenue dans la IsServerStarted variable. Donc, vous pouvez définir IsServerStarted=true, puis if réussirait puisque true est un shell intégré qui retourne toujours vrai. Vous pouvez définir IsServerStarted='grep popsicle freezer' and the si `passerait ou échouerait selon si vous étiez en dehors des friandises.

if [ $IsServerStarted -eq 0 ]; then ... 

Ceci teste simplement si la variable est égale à zéro. Si ce n'est pas un nombre entier valide, cela provoquera un message d'erreur.