diff --git a/unix/shell/boucle.tml b/unix/shell/boucle.tml index 8662644..a37c0df 100644 --- a/unix/shell/boucle.tml +++ b/unix/shell/boucle.tml @@ -19,7 +19,7 @@ href="script.html">initiation à la programmation en shell).

Toutefois, avoir posé les rails ne suffit pas toujours : il peut -importer de disposer de mécanismes d'aiguillage. Les boucles vous +importer de disposer de mécanismes d'aiguillage. Les structures de contrôle vous permettront de réaliser ces mécanismes d'aiguillage, qui donneront à vos scripts souplesse et efficacité.

@@ -27,7 +27,7 @@ scripts souplesse et efficacité.

Examiner une condition : if et case

-

La boucle if

+

La structure if

Description

@@ -61,7 +61,7 @@ condition alternative ;
  • else (sinon), qui est facultatif et marque le comportement à adopter si la condition n'est pas remplie ;
  • fi (if à l'envers), qui marque la fin de -la boucle.
  • +la structure de branchement.

    On peut donc taper :

    @@ -137,7 +137,7 @@ fi
  • Le nombre de elif successifs est illimité, alors qu'il ne peut (et c'est logique) y avoir qu'une seule condition if, une seule instruction else -et une seule instruction fi dans une boucle.
  • +et une seule instruction fi correspondant au if initial.
  • Remarquez les dernières lignes du script : $HOME est cité dans des guillemets simples, alors que $PWD est @@ -149,11 +149,11 @@ interprété (le mot « $HOME » apparaîtra tel quel), tandis que -

    La boucle case

    +

    La structure case

    Quand préférer case à if ?

    -

    La boucle if est très pratique, mais devient rapidement +

    La structure de contrôle if est très pratique, mais devient rapidement illisible lorsqu'un aiguillage offre plusieurs sorties, et que l'on doit répéter une condition pusieurs fois sous des formes à peine différentes. Typiquement, un programme comme celui-ci est pénible à @@ -186,14 +186,14 @@ $PWD = » ; et qui dit redondance dit possibilité de faute de frappe – erreur particulièrement difficile à repérer à l'œil nu ;

  • -
  • parce que les différentes conditions ne sont pas mises sur le même -plan (if n'est pas, dans la boucle, sur le même plan que -elif, alors que logiquement les deux instructions le -sont), ce qui nuit à la lisibilité.
  • +
  • parce que les différentes conditions ne sont pas mises sur le même plan +(au if correspond un fi mais les elif +n'ont pas besoin d'être ainsi « refermés », alors que logiquement les deux +instructions le sont), ce qui nuit à la lisibilité.
  • -

    La boucle case entend remédier à ces inconvénients. Il +

    La structure de contrôle case entend remédier à ces inconvénients. Il s'agit tout simplement de la simplification d'un usage fréquent de la structure if. On peut récrire le programme suivant avec case :

    @@ -213,8 +213,7 @@ esac assure) :

      -
    1. la structure de la boucle et son enjeu sont -transparents ;
    2. +
    3. la structure et l'enjeu sont transparents ;
    4. la variable que l'on teste n'est citée qu'une seule fois, au lieu d'être répétée à chaque instruction elif ;
    5. @@ -225,7 +224,7 @@ plan.

      Syntaxe de case

      -

      La boucle case adopte la syntaxe suivante :

      +

      La structure case adopte la syntaxe suivante :

       case chaîne in
      @@ -235,7 +234,7 @@ esac
       

      -La boucle case commence par évaluer la +La structure case commence par évaluer la chaîne. Ensuite, elle va lire chaque motif. Enfin, et dès qu'une chaîne correspond au motif, elle exécute les commandes appropriées. En anglais, case signifie @@ -254,9 +253,9 @@ fermante (qui n'est ouverte nulle part !) ;

    6. la série des commandes est close par deux points et virgules successifs (« ;; ») ;
    7. -
    8. la boucle case est close par l'instruction +
    9. la structure case est close par l'instruction esac, qui n'est autre que le mot case à -l'envers (de même que la boucle if est terminée par +l'envers (de même que la structure if est terminée par l'instruction fi).
    10. @@ -322,11 +321,11 @@ fautes d'inattention, qui sont particulièrement coriaces à débuguer.

      -

      La boucle case exécute les commandes correspondant au +

      La structure case exécute les commandes correspondant au premier motif correct, et ne parcourt pas les motifs suivants si elle en a trouvé un. Par conséquent, si le dernier motif est « * », cela revient à l'instruction -else dans la boucle if.

      +else dans la structure if.

      @@ -336,7 +335,7 @@ et for

      Les structures if et case sont des structures d'aiguillage ; les structures while, -until et for sont proprement des +until et for sont des boucles. C'est-à-dire qu'elles soumettent à une condition déterminée la répétition (ou non) d'une suite de commandes.