5 votes

Quelle est la différence entre "elif" et "else if" dans le shell scripting?

Je suis très nouveau dans le scripting shell.

Quand je regarde du code, écrit pour ksh (#!/bin/ksh), je vois qu'il y a à la fois else if et elif utilisés dans un script.

Alors, quelle est la différence entre else if et elif dans le scripting shell?

4voto

mpy Points 24817

Je m'efforce de répondre en une phrase : Si vous utilisez elif, vous traitez une clause if, si vous utilisez else if, vous traitez deux clauses if.

Regardez ces exemples simples :

testone() {
  if [[ $CASE == 1 ]]; then
    echo Cas 1.
  elif [[ $CASE == 2 ]]; then
    echo Cas 2.
  else 
    echo Cas inconnu.
  fi
}

C'est formellement (l'indentation soignée a parfois du sens) une clause if comme vous pouvez voir que chaque cas est au même niveau hiérarchique.

Maintenant, la même fonction avec else if :

testtwo() {
  if [[ $CASE == 1 ]]; then
    echo Cas 1.
  else
    if [[ $CASE == 2 ]]; then
      echo Cas 2.
    else 
      echo Cas inconnu.
    fi
  fi
}

Vous avez formellement deux cascades de clauses if et en conséquence deux instructions de fermeture fi. Veuillez noter que cela ne fait aucune différence ici si j'écris else if sur une ligne (comme dans votre question) ou sur deux lignes (comme dans mon exemple).

Je suppose pourquoi les deux formes sont utilisées dans le même script : Si vous avez déjà écrit une clause if complète, mais avez besoin (par logique) de copier/couper & coller cela dans une clause if existante, vous vous retrouvez avec else if. Mais lorsque vous écrivez la clause if complète à partir de zéro, vous utilisez probablement la forme elif qui, selon moi, est plus simple à lire.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X