tests

tests tuteurs informatiquenous contacter utiliser ce site actu et stages docs à imprimer plan du site rechercher les tuteurs unix shell boucles commandes entrée/sortie fonctions présentation scripts tests variables serveur des élèves ens spi tests et calcul arithmétique qu'est-ce qu'un test ? une condition code de retour d'un test les opérateurs opérateurs logiques opérateurs arithmétiques opérateurs sur les fichiers qu'est-ce qu'un test ? un test est une opération dont le but est d'évaluer la valeur d'une expression. cette expression peut être simplement l'existence de quelque chose (par exemple, d'un fichier, ou bien d'une variable), ou ce peut être une proposition. concrètement, cela veut dire qu'un programme n'est pas limité à la possibilité de donner des ordres : il peut aussi poser des questions, et agir comme vous le décidez en fonction des réponses apportées aux questions. posons par exemple le principe suivant : « si dieu n'existe pas, alors tout est permis. » nous allons ensuite tester si dieu existe, et s'il n'existe pas, nous saurons que tout est permis. autre exemple : posons que « si le train passe sous le tunnel avant que j'aie compté jusqu'à dix, alors manek est vivant. » je vais donc tester si le train passe sous le tunnel avant que j'aie compté jusqu'à dix, et si c'est le cas, alors c'est que manek est vivant. c'est aussi simple que cela. une condition le shell propose deux principales façons de réaliser un test ; ces deux méthodes sont équivalentes : test expression [ expression ] les deux commandes suivantes reviennent donc au même : clipper ~ $ test -f foo || echo "le fichier foo n'existe pas." le fichier foo n'existe pas. clipper ~ $ [ -f foo ] || echo "le fichier foo n'existe pas." le fichier foo n'existe pas. code de retour d'un test un test renvoie un code de retour. un code de retour est un nombre (0 ou autre), qui correspond à une réponse de type « vrai » ou « faux ». c'est ce code de retour qui permet la manipulation des tests dans des structures de contrôle comme if, etc. le code de retour 0 correspond à la réponse « vrai ». pour répondre « faux », le programme répond... autre chose (ce peut être 1, 2, -1 ou autre). par exemple, un pilote de formule 1 utilise le programme suivant : while [[ "$couleur_du_feu" != "vert" ]] do attendre done démarrer_en_trombe les opérateurs opérateurs logiques non : l'opérateur « ! » l'opérateur logique « non » inverse le code de retour d'une commande, c'est-à-dire renvoie vrai si elle renvoie faux, et vice versa. on utilise cet opérateur en précédant une condition d'un point d'exclamation (« ! »). comparaison de plusieurs combinaisons d'opérateurs pour illustrer l'usage de cet opérateur, voici quatre cas de figure différents : # premier cas [ -f foo ] && echo "le fichier foo existe." dans l'exemple précédent, le shell teste si le fichier foo existe. comme il n'existe pas, le code de retour de ce test est 0. or, l'opérateur « && » n'exécute ce qui suit que si le code de retour est 1. comme ce n'est pas le cas, les commandes ne sont pas exécutées. # deuxième cas [ -f foo ] || echo "le fichier foo n'existe pas." le fichier foo n'existe pas. dans cet exemple, l'opérateur n'est plus « && » mais « || ». les commandes ne s'exécutent que si le code de retour vaut 0 ; comme c'est le cas, elles sont exécutées. # troisième cas [ ! -f foo ] && echo "le fichier foo n'existe pas." le fichier foo n'existe pas. ici, l'opérateur est de nouveau « && » ; mais contrairement aux deux exemples précédents, le test n'est plus [ -f foo ] mais [ ! -f foo ]. par conséquent, le code de retour est 1, et les commandes sont exécutées. # quatrième cas [ ! -f foo ] || echo "le fichier foo existe." voici la dernière combinaison possible. le code de retour est 1, mais il fallait 0 pour que les commandes soient exécutées. ces quatre exemples correspondent aux énoncés suivants : s'il est vrai que foo existe, alors il faut écrire : « le fichier foo existe. ». s'il n'est pas vrai que foo existe, alors il faut écrire : « le fichier foo n'existe pas. ». s'il est vrai que foo n'existe pas, alors il faut écrire : « le fichier foo n'existe pas. ». s'il n'est pas vrai que foo n'existe pas, alors il faut écrire : « le fichier foo existe. ». reformulation avec if dans un script, outre la formulation précédente, on pourra écrire : # premier cas if [ -f foo ] then echo "le fichier foo existe." else continue fi # deuxième cas if [ -f foo ] then continue else echo "le fichier foo n'existe pas." fi # troisième cas if [ ! -f foo ] then echo "le fichier foo n'existe pas." else continue fi # quatrième cas if [ ! -f foo ] then continue else echo "le fichier foo existe." fi et : l'opérateur « -a » l'opérateur « et » renvoie 1 (vrai) si et seulement si les différentes conditions sont toutes réalisées ; si au moins l'une d'entre elles ne l'est pas, le code de retour est 0 (faux). on note cet opérateur en insérant « -a » entre les différentes conditions. exemples : touch foo # donc foo existe rm bar # donc bar n'existe pas # [ -f foo ] = vrai si le fichier foo existe # [ ! -f bar ] = vrai si bar n'existe pas # à n'exécuter que si foo existe et que bar n'existe pas. [ -f foo -a ! -f bar ] && mv foo bar autres formulations possibles : test -f foo -a ! -f bar [ -f foo ] -a [ ! -f bar ] [[ -f foo && ! -f bar ]] si vous débutez, vous n'êtes pas tenu de retenir par cœur toutes les combinaisons possibles. sachez simplement les reconnaître si vous les lisez quelque part ; et pour vos propres scripts, vous il vous suffit de savoir bien manipuler la syntaxe qui vous paraît la plus lisible. ou : l'opérateur « -o » pour réaliser la condition de l'opérateur « ou », il suffit qu'une seule des conditions qu'il rassemble soit vraie : si toutes les conditions sont rassemblées, la condition d'ensemble l'est aussi ; si une partie seulement de ces conditions est rassemblée, la condition d'ensemble l'est aussi ; si aucune des conditions incluses n'est remplie, la condition d'ensemble ne l'est pas non plus. exemple : if [[ "$fichier" == "fichier_interdit" -o ! -f "$fichier" ]] then echo "je ne veux pas lire $fichier ou bien il n'existe pas." fi si $fichier vaut "fichier_interdit", il n'est pas lu ; si $fichier n'existe pas, il n'est pas lu ; si $fichier vaut "fichier_interdit" et qu'en plus il n'existe pas, il n'est pas lu ; si $fichier ne vaut pas "fichier_interdit" et qu'il existe bien, il est lu. opérateurs arithmétiques le shell permet d'opérer des calculs arithmétiques, même s'il est moins puissant que d'autres langages (perl, scheme, c, etc.) pour cela. les opérateurs sont les suivants : -eq (equal) : « égal à » (signe « = ») ; -ne (not equal) : « différent de » (signe « ≠ ») ; -gt (greater than) : « strictement supérieur à » (signe « > ») ; -lt (lesser than) : « strictement inférieur à » (signe « < ») ; -ge (greater or equal) : « supérieur ou égal à » (signe « ≥ ») ; -le (lesser or equal) : « inférieur ou égal à » (signe « ≤ ») ; on utilise ces opérateurs entre deux nombres ou variables numériques. par exemple : #!/bin/sh if test 2 -lt 3 then echo "c'est normal." fi if test 2 -gt 3 then echo "c'est absurde." fi petit=2 grand=3 if test $petit -ne 3 then echo "c'est normal." fi if test 2 -eq $grand then echo "c'est absurde." fi si vous exécutez ce programme, vous obtenez : c'est normal. c'est normal. opérateurs sur les fichiers une grande partie de la puissance du shell se déploie dans sa faculté de manipuler des fichiers. les principaux opérateurs disponibles sont : nature du fichier : -e (exists) : vérifie l'existence d'un fichier ;-f (file) : vérifie l'existence d'un fichier, et le fait qu'il s'agisse bien d'un fichier au sens strict ;-d (directory) : vérifie l'existence d'un répertoire ;-l (link) : vérifie si le fichier est un lien symbolique ; attributs du fichier : -s (size) : vérifie qu'un fichier n'est pas vide ; droits sur le fichier : -r (readable) : vérifie si un fichier peut être lu ;-w (writable) : vérifie si un fichier peut être écrit ou modifié ;-x (writable) : vérifie si un fichier peut être exécuté ; comparaison de fichiers : -nt (newer than) : vérifie si un fichier est plus récent qu'un autre ;-ot (older than) : vérifie si un fichier est plus ancien qu'un autre. exemple : #!/bin/sh if test -e ~/.emacs then echo "~/.emacs existe." else echo "~/.emacs n'existe pas." fi if test -d ~/.emacs then echo "~/.emacs est un répertoire." else echo "~/.emacs n'est pas un répertoire." fi if test -f ~/.emacs then echo "~/.emacs est un fichier." else echo "~/.emacs n'est pas un fichier." fi if test ~/.vimrc -nt ~/.emacs then "~/.vimrc est plus récent que ~/.emacs." fi auteur : baptiste mélès. dernière modification le 17 juillet 2007.

Acceuil

suivante

tests  Trucs astuces how-to, optimiser Windows Vista XP 2003 2000 NT 95 ...  CNRS - DSI - Conduite de projet - Tests de validation  Test minceur : testez vos connaissances minceur ! - Tests et quiz ...  Test beauté : testez vos connaissances sur la beauté. Les tests ...  surveillance - erika - suivi des contaminations - tests ...  OFFRES D'EMPLOI, EXEMPLES CV, TESTS EMPLOI, BILLETS AVION, CROISIERE  EducationFR Chine Tests de français Tests de français  Franc-parler - Annuaire de liens : Formation > Certifications et tests  QCM, Quizz, Tests et Culture Générale  Betapolitique - L’amendement sur les tests ADN supprimé en ...  Tests - Si vous étiez une maison, *vous seriez...* - Lefigaro.fr ...  Personality Tests  MAHG v2.0 - One hour tests with a COP of 21 by JL Naudin  Tests et recette  Forum Yahoo! Actualités - Général - Regroupement familial : tests ...  Conseils Carrière Monster - Les tests de recrutement  FplusD: Prüfungen und Tests  Tests ADN : Tests ADN: le coup de gueule de Fadela Amara - France  Les tests de langue  UPMC - UE: Tests  BiblioST2I -Tests de ressources 2007  Tests d'intelligence  Dossier : Postuler, Les tests de recrutement  Sympatico / MSN Mieux Vivre : Tests interactifs : Test interactifs ...  Bug 4821: petits tests - blog.mozbox.org  [ iPod Fanatic ] Tests matériels - iPod Nano - Shuffle - Mini  [ iPod Fanatic ] Tests logiciels - iTunes - Transfert - Jeu  LeMonde.fr : Réticent sur les tests ADN, le Sénat hésite à les ...  Auditweb - tests utilisateurs : détection des problèmes de ...  Les tests de paternité et leurs conséquences sur la famille ...  tests et outils : sport, ruffier, cooper, luc leger, VMA, vo2max ...  Tests de classement- Hiver 2008  Cyber Emploi - Outils - Tests de recrutement en ligne  AllRefer Health - Tests & Exams  TrackAno : gestion et suivi des tests, anomalies et recettes en ...  Tests - A nous la parole - Femme Actuelle  tests qcm test de logique, mathématique et compétences  Project-VerTeCs:Génération de tests et vérification symboliques  Scoopeo - Pétition POUR les tests ADN  Les tests mathematiques du Kangourou  Tests  EHESS : Actualités - Tests de ressources documentaires électroniques  GP2: tests au Paul Ricard - Circuit - GP2 - Renault - Sport Auto ...  HSC - Formation - Réalisation pratique des Tests d'Intrusion  KeepCore, Qualité, Test et Développement de logiciels - Exécution ...  KeepCore, Qualité, Test et Développement de logiciels - Tests ...  Décoration, design, idées déco : testez-vous sur Marie Claire Maison  Matériels : tests express SVM Mac  Logiciels : tests express SVM Mac  GOLIAS Editions - Tests ADN : Mgr Hippolyte Simon (Clermont) fait ...  Tests et positions  Documentation sur le groupement des tests  Des tests antidopage dans la PGA en juillet Golf Cyberpresse  Playstation portable PSP de Sony : news, tests [Jeux vidéo ...  Liste des Tests Consoles Portables - Page 1  Existe-t-il des tests de diagnostic rapide de la maladie chez les ...  Tests de langue (TCF, TEF, DELF-DALF) et dispenses - Campus France ...  Tests-manía  Tests - Matériel - Informatique - High-tech - Actualité  Tests de culture générale