TP3 - Scripts, tests et conditions
Fichiers de commande
Section titled “Fichiers de commande”Rappels
Section titled “Rappels”Voir le cours : Les scripts
Script
Les scripts sont des programmes qui permettent d’automatiser certaines tâches répétitives telles que l’administration ou les sauvegardes de fichiers. Ce sont des fichiers de texte en général sans extension ; ils ont parfois l’extension .sh ou .bash. Ils contiennent les mêmes commandes que celles exécutées en ligne de commande, plus éventuellement des structures itératives (for, while, until) ou conditionnelles (if) et des appels à des fonctions. Un script contient en général une commande par ligne. Il peut être paramétré, les paramètres sont désignés par $1, $2, … $9.
Exécuter un script shell
Pour exécuter un script shell, il suffit de taper bash suivi du nom de ce fichier dans une fenêtre de terminal. L’interprète exécute les commandes de manière séquentielle, dans l’ordre où elles apparaissent dans le fichier. Si l’on donne les droits d’exécution au fichier et que le fichier est place dans un répertoire défini dans la variable PATH, il suffit de taper le nom du fichier.
La variable PATH
Pour pouvoir exécuter un programme, le système d’exploitation doit pouvoir retrouver le fichier correspondant à cette commande. C’est la variable d’environnement PATH qui contient la liste des répertoires que l’interprète explore pour trouver un programme à exécuter. Vos scripts seront donc placés dans le répertoire $HOME/bin (voir TP2).
Avant de programmer
Section titled “Avant de programmer”-
Vérifiez que le répertoire
$HOME/binexiste et qu’il apparaît dans votre variablePATH. -
Conseil : utilisez un éditeur (graphique) de texte
vscodepour écrire vos scripts (comme au TP1) — l’extension shell intégrée donne la coloration syntaxique et les numéros de ligne, ce qui peut être utile lors de la mise au point de vos programmes.Si vous ne pouvez pas lancer d’applications graphiques, vous pouvez utiliser l’éditeur de texte nano
-
Pensez à utiliser votre cours et l’aide en ligne pour la syntaxe des commandes.
Scripts à écrire pendant la séance de TD
Section titled “Scripts à écrire pendant la séance de TD”-
Tester les paramètres passés à l’exécution d’un script shell
-
Dans le répertoire
$HOME/bin, créer le fichier de commandestestparamavec le texte ci-dessous.#!/bin/bashif [ $1 = "--help" ]thenecho "usage : testparm parametres"elseecho "Les parametres sont : $*"fi -
Que représentent
$1et$*?Voir le cours : Les variables spéciales
-
Que fait
[ $1 = "--help" ]?Voir le cours : La commande test
-
Tester ce script en passant 1, puis 2 paramètres, puis le paramètre
--help -
Que se passe-t-il si l’on teste le script sans passer de paramètre ?
-
Changer
[ $1 = "--help" ]par[ "$1" = "--help" ]. Le script fonctionne-t-il correctement maintenant ? Pourquoi ? -
Modifier le script pour que le message
usage : testparm parametressoit également affiché lorsque aucun paramètre n’est donné
-
-
Tester l’existence de fichier et/ou répertoire
-
Dans le répertoire
$HOME/bin, créer un fichier de commandestestficqui reprend l’exemple ci-dessous.#!/bin/bashif test $# -eq 0 -o "$1" = "--help"; thenecho "usage : testfic nomfichier"elif [ -f $1 ] ; thenecho "le fichier $1 existe"elif [ -d $1 ] ; thenecho "le repertoire $1 existe"elseecho $1 est absent !fi -
Tester cette commande pour un fichier et un répertoire existants/non existants.
-
Commenter le code :
- Que représentent le
$#? - Que fait
if test $# -eq 0 -o $1 = "--help"? - Que représente
[ -f $1 ]?
- Que représentent le
-
Afficher « l’aide » de la commande (en lançant le programme avec l’option correspondante)
-
Modifiez le script
testficde façon à ce qu’il permette de tester l’existence de plusieurs fichiers ou répertoires (nombre indéfini de paramètres) en utilisant la commandeshiftet une itération (voir l’exemple donné en cours).Voir le cours : Les paramètres (
shift)
-
Exercice bonus (pour les plus rapides)
Section titled “Exercice bonus (pour les plus rapides)”Écrire un script typefic qui, pour le paramètre passé, affiche :
lien symboliquesi c’est un lien symbolique,répertoiresi c’est un répertoire,fichier exécutablesi c’est un fichier exécutable,fichierpour tout autre fichier,inexistantsi rien ne correspond à ce nom.
typefic affichera un message d’aide si aucun paramètre n’est passé.
Attention : l’ordre des tests compte — un lien symbolique vers un répertoire vérifie aussi -d, et un fichier exécutable vérifie aussi -f.