You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
71 lines
2.0 KiB
71 lines
2.0 KiB
# TP 7 - Scripts
|
|
|
|
Pas de compte rendu dédié aux TP sur les scripts shell. Vos programmes
|
|
feront foi !
|
|
|
|
<note tip>
|
|
|
|
Quelques règles simples pour éviter les erreurs de syntaxe :
|
|
|
|
* jamais d'espace autour d'une affectation (exemple : `a=3`)
|
|
* des espaces partout ailleurs (exemple `if` `test` `$a`
|
|
`=` `4;` `then...` ou `if` `[` `$a` `=`
|
|
`4` `]` `;` `then...`
|
|
|
|
Pour observer les commandes exécutées, passez en mode trace en plaçant
|
|
la commande `set -x` en début de programme.
|
|
|
|
</note>
|
|
|
|
#### 6 - La commande menu1
|
|
|
|
En utilisant la structure `while`, écrire un script qui :
|
|
|
|
Tant que l'utilisateur n'a pas tapé 9
|
|
|
|
* affiche un menu
|
|
* demande à l'utilisateur de saisir une option du menu
|
|
* affiche à l'utilisateur le résultat de sa commande
|
|
|
|
Exemple de ce qui doit s'afficher à l'écran :
|
|
|
|
```
|
|
Menu général
|
|
***************************************
|
|
|
|
<1> Afficher la date (date)
|
|
|
|
<2> Afficher le nombre de personnes connectées (who)
|
|
|
|
<3> Afficher la liste des processus (ps)
|
|
|
|
<9> Quitter
|
|
```
|
|
|
|
#### 7 - La commande evaluateur
|
|
|
|
En utilisant la structure *until...do...done*, écrire un script qui :
|
|
|
|
* demande à un utilisateur de saisir une commande
|
|
* exécute la commande ou affiche un message d'erreur si la commande ne s'est pas correctement exécutée.
|
|
* répète cette opération tant que l'utilisateur le désire
|
|
|
|
Indication : si vous disposez d'une variable contenant une ligne de
|
|
commandes il est possible de l'exécuter via la fonction interne au shell
|
|
`eval`. Le code de retour retourné par eval est le code de retour
|
|
retourné par la commande. Exemple : `c="ls -l | wc -l"` `eval $c`
|
|
|
|
Voici un exemple de ce que votre programme doit afficher à l'écran :
|
|
|
|
```
|
|
Saisissez une commande, commande <q> pour quitter.
|
|
> date
|
|
mar sep 30 21:20:45 CEST 2008
|
|
Saisissez une commande, commande <q> pour quitter.
|
|
> cd /toto
|
|
bash: cd: /toto: Aucun fichier ou répertoire de ce type
|
|
cette commande a généré une erreur !!!!
|
|
Saisissez une commande, commande <q> pour quitter.
|
|
> q
|
|
```
|