13.07.2013 Views

Configuration, mise en oeuvre et administration de serveurs Internet ...

Configuration, mise en oeuvre et administration de serveurs Internet ...

Configuration, mise en oeuvre et administration de serveurs Internet ...

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

done<br />

Supposons, par exemple que vous souhaitiez afficher les 100 premiers nombres (pour une obscure raison), alors<br />

vous taperez :<br />

i=0<br />

while [ i −lt 100 ] ; do<br />

echo $i<br />

i=$[$i+1]<br />

done<br />

Remarque : −lt signifie "lesser than" ou "plus p<strong>et</strong>it que".<br />

Ici, on va afficher le cont<strong>en</strong>u <strong>de</strong> i <strong>et</strong> lui ajouter 1 tant que i sera (−lt) plus p<strong>et</strong>it que 100. Remarquez que 100 ne<br />

s'affiche pas.<br />

Refaire à un autre <strong>en</strong>droi la même chose<br />

Souvant, vous voudrez refaire ce que vous v<strong>en</strong>ez <strong>de</strong> tapez autre part dans votre script. Dans ce cas il est inutile <strong>de</strong><br />

r<strong>et</strong>aper la même chose, préférez utiliser l'instruction function qui perm<strong>et</strong> <strong>de</strong> réutiliser une portion <strong>de</strong> script. Voyons<br />

un exemple :<br />

#!/bin/sh<br />

function addpath ()<br />

{<br />

if echo $PATH | grep −v $1 >/<strong>de</strong>v/null; th<strong>en</strong><br />

PATH=$PATH:$1;<br />

fi;<br />

PATH=`echo $PATH|sed s/::/:/g`<br />

}<br />

addpath /opt/apps/bin<br />

addpath /opt/office52/program<br />

addpath /opt/gnome/bin<br />

Au <strong>de</strong>but, nous avons défini une fonciton nommée addpath dont le but est d'ajouter le premier argum<strong>en</strong>t ($1) <strong>de</strong> la<br />

fonction addpath à la varaible PATH si ce premier argum<strong>en</strong>t n'est pas déjà prés<strong>en</strong>t (grep −v $1) dans la variable<br />

PATH, ainsi que supprimer les chemins vi<strong>de</strong> (sed s/ : :/ :/g) <strong>de</strong> PATH.<br />

Ensuite, nous éxécuton c<strong>et</strong>te fonction pour trois argum<strong>en</strong>ts : /opt/apps/bin, /opt/office52/bin <strong>et</strong> /opt/gnome/bin.<br />

En fait, une fonction est seulem<strong>en</strong>t un script écrit à l'intérieur d'un script. Elles perm<strong>et</strong>t<strong>en</strong>t surtout <strong>de</strong> ne pas<br />

multiplier les p<strong>et</strong>its scripts, ainsi que <strong>de</strong> partager <strong>de</strong>s variables sans se préocuper <strong>de</strong> la clause export mais cela<br />

constitue une utilisation avancée du shell, nous ne nous <strong>en</strong> occuperons pas dans c<strong>et</strong> article.<br />

Remarque : le mot function peut être omis.<br />

Autres types <strong>de</strong> répétitions<br />

Il existe d'autres type <strong>de</strong> répétitions, mais nous ne nous <strong>en</strong> occuperons pas dans c<strong>et</strong>te article, je vous conseille la<br />

lecture forcém<strong>en</strong>t profitable <strong>de</strong> la man page <strong>de</strong> bash.<br />

34 sur 89 34

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!