La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

1 Système d’exploitation Les scripts csh 1 ère Année Année 2001-20002 Tienté HSU.

Présentations similaires


Présentation au sujet: "1 Système d’exploitation Les scripts csh 1 ère Année Année 2001-20002 Tienté HSU."— Transcription de la présentation:

1 1 Système d’exploitation Les scripts csh 1 ère Année Année 2001-20002 Tienté HSU

2 2 Système d’exploitation Matériel et logiciels informatiques Généralités d’un système Unix Les processus Le système de fichiers (SGF) Les commandes unix Les scripts C-shell

3 3 Il existe 2 types de programmes exécutables : Les programmes obtenus par compilation : cc, c++, javac, …etc Les programmes scripts contenant des commandes directement exécutable par un interpréteur de commandes (csh, sh, perl, …etc). Les programmes exécutables

4 4 Un shell est un interpréteur de langage de commandes. Il a 2 rôles : Un rôle interactif : l’utilisateur peut exécuter directement des commandes Un rôle de langage de programmation : le shell exécute les commandes contenues dans un fichier Sous unix, il existe plusieurs shells : Le C-shell (csh) ou turbo C-shell (tcsh) Le Korn-shell (ksh) Le Bourne-shell (sh) ou le Bourne-Again-Shell (bash) La liste des shells disponibles se trouve dans /etc/shells Interpréteur de commandes : shell

5 5 Exécution d’un programme shell (1) CommandeConditions sur le fichier Effet csh nom_fichierFichier lisibleInterprétation par un sous processus shell nom_fichierFichier exécutable dont la première ligne commence par #! ref_shell Interprétation par un sous processus ref_shell source nom_fichierFichier lisibleInterprétation dans le shell courant exec nom_fichierFichier lisible et exécutable Recouvrement du csh courant par un csh interprétant le fichier

6 6 Un programme shell est un fichier contenant un ensemble de commandes unix. Cet ensemble est interprétable par le shell. Exemple : script #! /bin/csh  interpréteur de commandes echo "ceci est un script"  instruction à exécuter Exemples d’exécution : csh script argument1 argument2 …. source script argument1 argument2 … script argument1 argument2 …. Dans le dernier cas le programme devra : commencer par #! Référence d’un shell (ex. #! /bin/csh) posséder l’attribut d’exécution (x) Exécution d’un programme shell (2)

7 7 Le C-shell distingue 2 types de variables : les variables locales : visibles uniquement par le processus qui les a créées. Les variables locales du processus père ne sont pas accessibles par le fils. les variables globales : les variables du père sont accessibles et modifiables par le processus fils L’ensemble des variables globales est appelé environnement du processus Par convention : Les variables locales sont en minuscules Les variables globales sont en majuscules csh : les variables (1)

8 8 Nom de variable : chaîne de caractères Accès au contenu d’une variable ($) Exemple : echo $path Affectation d’une variable : set nomvar = valeur  initialisation d’une variable locale setenv NOMVAR valeur  initialisation d’une variable globale Listage les variables déclarées : set  liste des variables locales setenv  liste des variables globales les variables (2) : utilisation (1)

9 9 Désallocation d’une variable : unset nomvar  désallocation d’une variable locale unsetenv NOMVAR  désallocation d’une variable globale Existence d’une variable : $?nomvar  1 si la variable est définie, 0 sinon les variables (3) : utilisation (2)

10 10 Par défaut tous les variables sont du type caractère. Exemple : set a = 12+15 echo $a On obtient comme résultat 12+15 et non 27 Affectation d’une variable : @ nomvar = valeur  initialisation d’une variable numérique Opérateurs +, -, *, /, %, ++, --, +=, -=, *=, /=, %= Exemples : @ a = 1  a contient 1 @ a ++  a contient 2 @ b = 3*$a  b contient 6 @ c = $a - $b  c contient -4 les variables (4) : variables numériques

11 11 Le shell permet de définir les variables de type tableau Affectation d’une variable tableau: set vartab = (v1 v2 …)  initialisation d’une variable tableau Les éléments du tableau sont indicés de 1 à $#vartab Accès au contenu des éléments $vartab  la totalité du tableau $vartab[1]  le 1er élément du tableau $vartab[2]  le 2ème élément du tableau $vartab[$#vartab]  le dernier élément du tableau $vartab[3-5]  l’élément 3 à l’élément 5 $vartab[-7]  du 1er élément au 7ème élément $vartab[5-]  du 5ème élément au dernier élément La dimension d’un tableau : $#vartab La dimension d’une variable de type tableau peut être modifiée set vartab = ($vartab[2-$#vartab])  le 1er élément est supprimé set vartab = ($vartab valeur)  ajout d’une valeur en fin set vartab = (valeur $vartab)  ajout d’une valeur au début les variables (5) : les tableaux

12 12 Saisi des éléments à partir du clavier : set nomvar = $<  initialisation à partir du clavier, le résultat est une chaîne set nomvar = ($<)  initialisation à partir du clavier, le résultat est un tableau les variables (6) : suite

13 13 Variables globales HOME : répertoire de connexion de l’utilisateur PATH : liste des répertoires de recherche des commandes PWD : répertoire courant TERM : type de terminal utilisé SHELL : nom du shell utilisé USER : nom de l’utilisateur DISPLAY : localisation de l’affichage Variables locales : argv : liste des arguments du shell $#argv  le nombre d’arguments $argv  la liste des arguments $argv[1]  le 1er argument cwd : référence absolue du répertoire de travail les variables prédéfinies (1)

14 14 Variables locales homonymes status : code de retour de la dernière commande prompt : chaîne de caractères utilisée comme invite home : répertoire de connexion de l’utilisateur path : liste des répertoires de recherche des commandes term : type de terminal utilisé shell : nom du shell utilisé user : nom de l’utilisateur Toute modification d’une de ces variables entraîne la modification de la variable globale correspondante. Par contre l’inverse n’est pas vrai. les variables prédéfinies (2)

15 15 Toute chaîne précédée du caractère # est un commentaire. Exemple : #Ceci est un commentaire Les instructions (1) : commentaire

16 16 ’ : une chaîne de caractères mise entre simple quotes ne sera pas interprétée par le shell " : seuls les métacaractères ($, ` et \) sont interprétés, les autres seront pas interprétés. ` : un texte entre quotes inversés est considéré comme une commande à exécuter. Exemples : echo ’ ceci est une chaine de caractères non interprétée’ echo `pwd` echo " Le répertoire courant de l’utilisateur $user est `pwd` " Utilisation des divers guillemets

17 17 Les opérateurs utilisables dans une expression logique sont ==test si égalité !=test si différent <test si inférieur >test si supérieur <=test si inférieur ou égal >=test si supérieur ou égal &&opérateur ET logique ||opérateur OU logique !opérateur NOT Exemples : if ($val =0)  la variable val est comprise entre 0 et 20 if ("$chaine" != "")  la variable chaine est différente vide Remarque : le caractère espace est nécessaire avant et après un des opérateurs ci-dessus Les instructions (2) : expression logique

18 18 Les opérateurs de test sur les fichiers sont : -e fichiervrai si fichier existe -f fichiervrai si fichier est un fichier -r fichiervrai si l’utilisateur a le droit de lecture sur fichier -w fichiervrai si l’utilisateur a le droit d’écriture sur fichier -x fichiervrai si l’utilisateur a le droit d’exécution sur fichier -o fichiervrai si l’utilisateur est propriétaire du fichier -z fichiervrai si fichier existe et est de taille nulle -d fichiervrai si fichier est un répertoire Exemples : if (-d ~user)  vrai si le répertoire utilisateur user existe if (-f $argv[1])  vrai si l’argument 1 est un fichier Les instructions (3) : opérateur de test sur les fichiers

19 19 Il existe 3 formes possibles : La plus simple : (pas du mot clef then) if (expression) instruction ou if (expression) \ instruction La plus traditionnelle : if (expression) thenou if (expression) then {instructions} {expressions} elseendif {instructions} endif L’instruction conditionnelle (1) : IF

20 20 If en cascade : un seul endif sur la totalité de la structure. if (expression) then {instructions} else if (expression) then {instructions} else if (expression) then {instructions} … else {instructions} endif Remarque : le shell est un langage interprété, il est nécessaire de respecter scrupuleusement la syntaxe (par exemple le mot then doit être sur la même ligne que if) L’instruction conditionnelle (2) : IF

21 21 Syntaxe : foreach var (liste) {instructions} end liste : une liste de valeurs ou une variable de type tableau Les instructions entre foreach et end sont exécutées avec var prenant successivement les valeurs des éléments de liste. Exemples : foreach i (1 2 3 4 5) echo $i end foreach fic (`ls`) echo $fic end Les instructions itératives (1) : FOREACH

22 22 Syntaxe : while (expression) {instructions} end Les instructions sont exécutées tant que l’expression est vraie. Remarque : une expression de valeur nulle est considérée comme fausse, tout autre valeur est considérée comme vraie Exemple : @ n = 4 while ($n >= 0)ou while ($n) echo $n @ n-- end Les instructions itératives (2) : WHILE

23 23 break : provoque la sortie immédiate de la boucle, le script reprend son cours après le end correspondant Exemple : @ somme = 0 set n = $< while ($n) if ($n >=20 || $n < 0) then set n = $< break endif @ somme += $n set n = $< end echo "Le somme totale est $somme" Les instructions de rupture d’itération (1) : break

24 24 continue : provoque le passage immédiat à l’itération suivante de la boucle Exemple : @ somme = 0 set n = $< while ($n) @ reste = $n % 2 if ($reste) then @ n -- continue endif @ somme += $n @ n -- end echo "Le somme totale est $somme" Les instructions de rupture d’itération (2) : continue

25 25 switch ($var)default : case valeur1 : {instructions} {instructions}breaksw breakswendsw case valeur2 : {instructions} breaksw endsw …… La commande switch teste si le contenu de var est égal à valeur1 : si oui, les instructions jusqu’au breaksw sont exécutées sinon, la commande teste var par rapport à valeur2 et ainsi de suite Si aucune clause n’est vérifiée, la clause default sera exécutée La clause default et l’instruction breaksw sont facultatives L’instruction de choix multiple : switch (1)

26 26 echo "entrer une note : " set note = $< switch ($note) case 10 : case 9 : case 8 : case 7: case 6: echo " Vous êtes bon … " breaksw case 5 : echo " Vous êtes moyen … " breaksw default : echo " Vous n’êtes pas très fort … " breaksw endsw L’instructions de choix multiple : switch (2)

27 27 etiquette :une étiquette est une chaîne de caractères suivie du caractère : goto etiquettebranchement inconditionnel sur l’etiquette L’instructions goto

28 28 Un script c-shell peut contenir n’importe quelle commande exécutable sous unix. On appelle un script récursif un script qui fait appel à lui même. Exemple : nb_fichiers est un script permettant de déterminer le nombre de fichiers contenus dans un répertoire rep passé en paramètre. #! /bin/csh # nom du programme : nb_fichiers if ($#argv == 1) then @ nbfic = 0 foreach fic (`\ls $argv`) if (-f $argv/$fic) then @ nbfic ++ endif end echo "le nombre de fichiers est $nbfic" endif Les scripts récursifs

29 29 Exemple 2 : nb_fichiers2 est un script permettant de déterminer le nombre de fichiers contenus dans le sous arbre ayant pour racine rep passé en paramètre. #! /bin/csh # nom du programme : nb_fichier2 if ($#argv == 1) then @ nbfic = 0 foreach fic (`\ls $argv`) if (-f $argv/$fic) then @ nbfic ++ else if (-d $argv/$fic) then set res = `nb_fichiers2 $argv/$fic` @ nbfic += $res[6] endif end echo "le nombre de fichiers est $nbfic" endif Les scripts récursifs (2)


Télécharger ppt "1 Système d’exploitation Les scripts csh 1 ère Année Année 2001-20002 Tienté HSU."

Présentations similaires


Annonces Google