Les structures de contrôle

Les variables Exo sur les critères de sélection

La commande awk

Présentation

Les décisions (if, else)

Les boucles (while, for, do-while)

Sauts controlés (break, continue, next, exit)

Présentation

Parmi les structures de contrôle, on distingue les décisions (if, else), les boucles (while, for, do-while, loop) et les sauts (next, exit, continue, break).

Les décisions (if, else)

La syntaxe est la suivante:

if (condition)   si la condition est satisfaite (vraie)
instruction1   on exécute l'instruction 1
else   sinon
instruction2   on exécute l'instruction 2

Si vous avez une suite d'instructions à exécuter, vous devez les regrouper entre deux accolades. Exemples:

awk ' BEGIN{print"test de l'absence de mot de passe";FS=":"}    
  NF==7 {   pour toutes les lignes contenant 7 champs
  if ($2=="")   si le deuxième champ est vide (correspond au mot de passe crypté)
  { print $1 "n'a pas de mot de passe"}   on affiche le nom de l'utilisateur ($1=login) qui n'a pas de mot de passe
  else   sinon
  {print $1 " a un mot de passe"}   on affiche le nom de l'utilisateur possédant un mot de passe
  }END{print"C'est fini") ' /etc/passwd    

Les boucles (while, for, do-while)

while, for et do-while sont issus du langage de programmation C. La syntaxe de while est la suivante:

while (condition)   tant que la condition est satisfaire (vraie)
instruction   on exécute l'instruction

Exemple:

awk ' BEGIN{print"affichage de tous les champs de passwd";FS=":"}{    
  i=1   initialisation du compteur à 1 (on commence par le champ 1)
  while (i=<NF)   tant qu'on n'est pas en fin de ligne
  { print $i   on affiche le champ
  i++   incrémentation du compteur pour passer d'un champ au suivant
  }    
  }END{print"C'est fini") ' /etc/passwd    

La syntaxe de for est la suivante:

for (instruction de départ; condition; instruction d'incrémentation)   On part d'une instruction de départ, on incrémente
instruction   on exécute l'instruction jusqu'à que la condition soit satisfaite

Exemple:

awk ' BEGIN{print"affichage de tous les champs de passwd";FS=":"}{    
  for (i=1;i=><NF;i++)   initialisation du compteur à 1, on incrémente le compteur jusqu'à ce qu'on atteigne NF (fin de la ligne)
  { print $i }   on affiche le champ tant que la condition n'est pas satisfaite
  }END{print"C'est fini") ' /etc/passwd    

Avec for on peut travailler avec des tableaux. Soit le tableau suivant: tab[1]="patate", tab[2]="courgette", tab[3]="poivron". Pour afficher le contenu de chacun des éléments du tableau on écrira:

for (index in tab)  
{  
print "legume :" tab[index]  
}  

La syntaxe de do-while est la suivante:

do    
{instructions}   on exécute les instructions
while (condition)   jusqu'à que la condition soit satisfaite

La différence avec while, est qu'on est sûr que l'instruction est exécutée au moins une fois.

Sauts controlés (break, continue, next, exit)

break permet de sortir d'une boucle, la syntaxe est la suivante:

for (;;;)   boucle infinie
{instructions   on exécute les instructions
if (condition) break   si la condition est satisfaite on sort de la boucle
instructions}    

Alors que break permet de sortir d'une boucle, continue force un nouveau passage dans une boucle.

next permet d'interrompre le traitrement sur la ligne courante et de passer à la ligne suivante (enregistrement suivant).

exit permet d'abandonner la commande awk, les instructions suivant END sont exécutées (s'il y en a).

Retour haut de la page