20.05.2015 Views

Télécharger - Site personnel de Serge Moutou

Télécharger - Site personnel de Serge Moutou

Télécharger - Site personnel de Serge Moutou

SHOW MORE
SHOW LESS

Create successful ePaper yourself

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

do echo "$k! = " $((p=$p * $k)) ; k= $k+1<br />

done<br />

Idée (saugrenue !) : écrire le script somme-entiers.sh pour calculer la somme 1+2+..+n, où la valeur <strong>de</strong> n est passée en<br />

argument<br />

eval<br />

Cette comman<strong>de</strong> ordonne l'interprétation par le shell <strong>de</strong> la chaine passée en argument. On peut ainsi<br />

construire une chaine que l'appel à eval permettra d'exécuter comme une comman<strong>de</strong> !<br />

Exemple<br />

message="Quelle est la date d'aujourd'hui ?<br />

set $message<br />

echo $# ---> le nombre <strong>de</strong> mots est 6<br />

echo $4 ---> affiche la chaine "date"<br />

eval $4 ---> interpréte la chaine "date" comme une comman<strong>de</strong>, donc ...<br />

Il est souvent pratique <strong>de</strong> construire une chaine dont la valeur sera égale au libellé d'un enchainement <strong>de</strong><br />

comman<strong>de</strong>s (par ;). Pour faire exécuter ces comman<strong>de</strong>s contenues dans la chaine, on la passe comme<br />

argument <strong>de</strong> la comman<strong>de</strong> eval<br />

exemple 1<br />

liste="date;who;pwd" ( ' ' ou " " obligatoires sinon le ; est un séparateur <strong>de</strong><br />

comman<strong>de</strong>s)<br />

eval $liste<br />

---> exécute bien les 3 comman<strong>de</strong>s<br />

exemple 2<br />

Soit la chaine $user qui contient <strong>de</strong>s information sur un compte à créer. S'il utilise un autre séparateur que ";"<br />

on fait appel à tr d'abord<br />

user="login=toto ; mdp=moi ; nom='Monsieur Toto' ; groupe=profs"<br />

eval $user<br />

echo $login $mdp $nom $groupe<br />

useradd -G $groupe $login<br />

echo $mdp | (passwd --stdin $login)<br />

TP1 Scripts BASH<br />

I. Scripts a: et c:<br />

Pour les nostalgiques du dos, il s'agit <strong>de</strong> taper a: en ligne <strong>de</strong> comman<strong>de</strong> et d'obtenir le contenu du répertoire<br />

principal <strong>de</strong> la disquette. Taper c: pour démonter la disquette et obtenir la liste <strong>de</strong> /<br />

II. Vérifier si un utilisateur est connecté<br />

III. Lire et traiter un fichier texte<br />

a. Prérequis : while, les paramètres positionnels, set --<br />

Conseil : utiliser la construction :<br />

90 /163

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

Saved successfully!

Ooh no, something went wrong!