if

La structure de controle if permet de réaliser des tests.
La commande située à droite du if est exécutée.
Si le code retour de la commande ($?) est égal à 0 (vrai), les commandes situées dans le bloc then sont exécutées.
Si le code de retour est supérieur à 0 (faux), ce sont les commandes situées dans le bloc else (optionnel) qui sont exécutées.
Dans le cas où le bloc else n'est pas spécifié, le shell continue à la première commande située sous le fi.

Les différentes syntaxes :

if, then, else, fi

if commande1
then
     commande2
     commande3
     ...
else
     commande4
     ...
fi

if, then, fi

if commande1
then
     commande2
     commande3
     ...
fi

if, then, elif, else, fi

if commande1
then
     commande2
     commande3
     ...
elif commande4
then
     commande5
     ...
else
     commande6
     ...
fi

Le mot clé fi permet de fermer la structure de controle if.
Le mot clé elif n'a pas de fermeture.

Autres syntaxes :

Le mot clé then peut être placé sur la même ligne que le if à condition de les séparer à l'aide d'un point virgule.

if commande1 ; then
     commande2
     commande3
     ...
fi

Plusieurs structures de controles if peuvent être imbriquées les unes dans les autres.

if commande1
then
     commande2
     ...
else
     if commande3
     then
          commande4
          ...
     else
          commande5
          ...
     fi
fi

Exemple :

Le script suivant vérifie si un argument est passé en paramètre et dans le cas contraire demande une saisie clavier à l'utilisateur.
Le script vérifie ensuite que le user saisi existe bien dans le fichier /etc/passwd.

$ nl user_passwd.sh
     1  #!/bin/bash
     2  if [[ $# -ne 1 ]]
     3  then
     4          echo -e "Saisir le nom d'un user : \c"
     5          read user
     6  else
     7          user=$1
     8  fi
     9  if grep -q "^$user:" /etc/passwd
    10  then
    11          echo "Le user $user existe"
    12          echo "Son UID est le : $(grep "^$user:" /etc/passwd | cut -d":" -f3)"
    13          echo "Son GID est le : $(grep "^$user:" /etc/passwd | cut -d":" -f4)"
    14  else
    15          echo "Le user $user n'existe pas !!!"
    16  fi
    17  exit 0
$ ./user_passwd.sh root
Le user root existe
Son UID est le : 0
Son GID est le : 0
$ ./user_passwd.sh
Saisir le nom d'un user : www-data
Le user www-data existe
Son UID est le : 33
Son GID est le : 33
$

Etiquettes: