• [^] # Re: exercice d'entrainement

    Posté par . En réponse au message Commande if à écrire. Évalué à 2. Dernière modification le 28 décembre 2015 à 11:50.

    Hello.

    Quand tu exécutes une commande en shell, le système te retourne un code retour. La convention sous Unix veut qu'un processus qui a réussi retourne le code 0. Ce code retour est accessible via la variable d'environnement $?

    Exemple :

    $ mkdir toto
    $ cd toto
    $ ls
    $ echo $?
    0
    

    Quand une commande échoue, elle retourne un code différent de 0 (le code retour est en général documenté dans les pages man). Exemple : je vais lister un fichier/repertoire qui n'existe pas :

    ls ./titi
    ls: impossible d'accéder à ./titi: Aucun fichier ou dossier de ce type
    echo $?
    2

    En ce qui concerne les tests avec if, voir ce cours qui est assez bien fait. En testant le code de retour de la variable d'environnement $?, tu devrais pouvoir t'en sortir.

    Ah, petit détail : j'ai pour habitude dans mes scripts de sauvegarder le code retour de la commande à tester juste après que celle-ci ait été exécuté. En effet, la variable $? est mise à jour à chaque exécution de commande. en gros, je fais un truc du genre :

    ls ./titi
    ret=$?
    if [ $ret != 0 ]
    then 
     ...

    Sinon, il faut tester de suite la variable $? et être sur que personne n'ajoutera de commande entre la commande que tu veux tester et le test if.