2010-09-02 3 views
0

je donne les résultats suivants (partie du grand script ksh)

while [[ $? -ne 0 ]] 
    do 

    print -n "ENTER VALID HOST IP" 
    read IP 
    CHECK_IP $IP # CHECK_IP is afuntion that check if IP is valid and return 0 or 1 
    done 

comme nous le voyons dans le $ alors que le? est toujours égal à 0 donc nous ne pouvons pas demander pour l'IP

la cible de la boucle est de demander l'adresse IP et activer la fonction CHECK_IP pour retourner 0 ou 1

0 pour IP valide

1 pour BAD IP

mais comme je l'ai dit dans le suppliant je n'ai jamais posé de questions sur IP parce que $? toujours 0 (après "while")

donc ma question

Comment activer par défaut à 1 $? donc je vais commencer la boucle, ou une autre suggestion?

lidai

Répondre

2

Run false premier.

+1

grande solution whaaao très coooooooooooool – lidia

0

$? est le statut de sortie de la commande précédente exécutée. On ne peut pas garantir que $? toujours renvoyer 0.

Votre code ci-dessus indique que 'si une erreur survient, répétez'. En d'autres termes, le $? -ne 0 gardera/assurera que votre boucle s'arrêtera quand une commande sera exécutée avec succès.

Je ne sais pas exactement quel est votre cas. Mais je suppose que vous avez un tas d'adresses IP où beaucoup d'entre eux sont incorrects. La boucle elle-même vérifiera ces adresses IP et quittera si une adresse IP est correcte.

La plus grande question est de savoir si votre code pourra jamais entrer dans la boucle. Si tel est le cas, l'utilisation de while-do est incorrecte. Essayez do-while (je ne sais pas si c'est disponible dans votre shell ou non). En utilisant do-while, vous serez sûr que votre code entrera dans la boucle au moins 1 fois.