[go: up one dir, main page]

0% ont trouvé ce document utile (0 vote)
30 vues15 pages

Script

Ce chapitre traite des scripts de commande Unix, en abordant les différents types de shells, la syntaxe d'écriture des scripts, et l'utilisation des variables. Il explique comment automatiser des tâches répétitives à l'aide de scripts, ainsi que les tests conditionnels et les fonctions. Les concepts clés incluent la déclaration de variables, l'exécution de commandes, et l'évaluation d'expressions arithmétiques.

Transféré par

kenneflorinda2005
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
30 vues15 pages

Script

Ce chapitre traite des scripts de commande Unix, en abordant les différents types de shells, la syntaxe d'écriture des scripts, et l'utilisation des variables. Il explique comment automatiser des tâches répétitives à l'aide de scripts, ainsi que les tests conditionnels et les fonctions. Les concepts clés incluent la déclaration de variables, l'exécution de commandes, et l'évaluation d'expressions arithmétiques.

Transféré par

kenneflorinda2005
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
Vous êtes sur la page 1/ 15

chapitre 4 Scripts de commande Unix

jnouedoni@yahoo.com
December 9, 2024

à la fin de ce chapitre, je dois être capable de :

1. Caractériser puis distinguer les différents shells de commande Unix ;

2. Utiliser les tests conditionnels et autres instructions itératives;

3. Créer puis appeler des fonctions systèmes;

4. Evaluer ou exécuter des expressions mathématiques;

5. Exécuter des scripts de commande;

1 Introduction
Les administrateurs et utilisateurs unix effectuent régulièrement des actions
identiques en introduisant les mêmes commandes dans le terminal de com-
mande unix. Ces actions repétitives peuvent être automatisées en créant des
scripts de commande contenant les instructions ou commandes offertes par
les shells de commande. L’utilisation des scripts de commande s’avère in-
dispensable pour tout utilisateur du système Unix. Ce chapitre a pour but
de faciliter une imprégnation aux techniques de rédaction puis exécution des
scripts de commande unix. Il commence par décrire la syntaxe d’écriture des
scripts de commande en passant en révue les instructions d’entrée-sortie, de
déclaration puis utilisation des variables, définition des fonctions, évaluation
des expresssions etc. Il s’interesse ensuite aux différents shells de commande
afin de mieux appréhender leur particularité.

Complexe Universitaire Siantou


Cycle Licence profressionnelle
Gestion des Processus jnouedoni@yahoo.com
2 Shell de commande unix 2

2 Shell de commande unix


2.1 Définition
Un shell de commande ou interpréteur de commandes est un environnement1
permettant l’écriture puis exécution des commandes et scripts de commande.
Il est constitué d’un ensemble de règles lexicales, syntaxiques et sémantiques
permettant l’écriture et exécution de programmes valides. De façon générale
un shell comporte des commandes internes et des commandes externes

2.2 les types de shell


Plusieurs shell Unix coexistent, parmi eux figurent :

1. le shell Posix

2. BASH

3. C shell

4. Korn Shell

5. Almquist Shell (ash)

6. Dash (Debian Almquist shell)

Le shell de commandes employé par chaque utilisateur Unix est défini au


moment de la création du compte dudit utilisateur par l’administrateur. La
variable d’environnement SHELL détient la valeur du shell de commandes
de chaque utilisateur.

2.2.1 Le shell Posix


Le shell2 ou shell POSIX Portable Operating System for Unix est un ensemble
de recommandations de IEEE concernant le système UNIX. Ces normes sont
collectivement connues sous le vocable IEEE 1003. Ce shell est historique-
ment le plus ancien puisque crée en 1970 par Steve Bourne aux laboratoires
AT&T.
1
aussi appelé programme
2
encore appelé sh

Complexe Universitaire Siantou


Cycle Licence profressionnelle
Gestion des Processus jnouedoni@yahoo.com
2.3 Script de commandes 3

2.2.2 BASH
BASH ou Bourne Another shell3 est l’interpréteur de commandes le plus
populaire de l’environnement Unix. Le Bash est compatible avec le shell
POSIX tout en incorporant les aspects propres au Korn Shell et au C shell.

2.2.3 Korn shell


Le Korn Shell ou Ksh est crée en 1983 par David Korn. Celui-ci s’inspire du
Bourne Shell

2.2.4 C- shell
Le C-shell inventé par Bill Joy, en 1970, est incompatible avec le shell Bourne
mais offre des fonctionnalités supplémentaires telles que l’historique de com-
mandes, la création des alias et le contrôle des tâches. Il est à souligner que
ce shell est peu utilisé sous UNIX

2.3 Script de commandes


Un Script de commandes est une suite finie de commandes du shell utilisa-
teur automatisant l’exécution de commandes qui autrement serait entrée puis
exécutée l’une après l’autre. la forme générale d’un script de commande est
:
commande 1
commande 2
...
commande n
Le séparateur de commandes dans un script est l’espace4 . Un script est crée
dans un éditeur de texte5 puis executé. La création d’un script correspond à
la saisie des commandes du script puis à la sauvegarde du fichier ainsi saisi.
La seconde étape consiste à rendre le script exécutable au moyen de la com-
mande
chmod +x nomscript
où nomscript désigne le nom du fichier script.
exemple de script
echo ”début du script”
echo” le repertoire courant est”
cat $pwd
3
mais aussi Bourne Again shell, après la création du shell POSIX par Steve Bourne
4
ou le caracère ;
5
gedit, vi, ...

Complexe Universitaire Siantou


Cycle Licence profressionnelle
Gestion des Processus jnouedoni@yahoo.com
3 Déclaration et utilisation des variables 4

echo”la liste des fichiers du repertoire courant est”


ls -all —more
Si le script précédent est enregistré sous le nom script1, pour le rendre
exécutable, il faut entrer la commande
chmod +x script1
Pour exécuter le script de commandes, il suffit d’entrer une commande de la
forme:
shell nomscript
où shell peut être: bash, csh, ksh, etc. et nomscript indique le nom du fichier
script. pour exécuter script1, en supposant que le shell est bash, la com-
mande à entrer sera :
bash script1
Dans un script de commandes, les caractères ci-après ont la signification
mentionnée dans le tableau ci-dessous:

caractères signification
espace, tabula- séparateurs de mots sur la ligne de com-
tion mande
& exécution en arrière plan
(), regroupement de commandes
; séparateur de commandes
$ et $ valeur d’une variable
”, ” ” caractères de protection

Table 1: signification des caractères dans un script

3 Déclaration et utilisation des variables


3.1 Définition
Une variable est un objet ou récipient de données contenant une valeur.
La valeur de la variable change constamment tout au long de l’exécution
du programme. Dans les scripts de commande, on distingue les variables
d’environnement et les variables utilisateur.

3.2 Variables d’environnement


Ces variables sont définies soit par le système d’exploitation ou alors par
l’administrateur et les utilisateurs du système. Les variables d’environnement

Complexe Universitaire Siantou


Cycle Licence profressionnelle
Gestion des Processus jnouedoni@yahoo.com
3.2 Variables d’environnement 5

font partie intégrante du contexte d’exécution d’un utilisateur. Une vari-


able d’environnement posède un nom et une valeur. Le nom de la variable
d’environnement doit conventionnellement être en lettres capitales.
Pour accéder au contenu d’une variable, qu’elle soit d’environnement ou util-
isateur il suffit de placer le caractère $ devant le nom de la variable de la
manière suivante : $ variable où variable désigne le nom d’une variable.
Exemple $HOME, $PATH, etc.

3.2.1 principales variables d’environnement


Pour visualiser les différentes variables d’environnement déjà définies, utiliser
la commande :set. Le tableau ci-après fournit la liste des principales variables
d’environnement

nom de la vari- signification


able
HOME répertoire de connexion de l’utilisateur
actuel
LANG précise la lngue de l’utilisateur
PWD repertoire courant de l’utilisateur
SHELL Précise l’interpréteur de commandes de
l’utilisateur
PS1 indique le texte de l’invite de com-
mande de l’utilisateur
PS2 indique le texte secondaire de l’invite
de commandes de l’utilisateur
PATH liste des repertoires qui seront ex-
ploités par le shell pour rechercher
le fichier contenant le programme à
exécuter lorsqu’une commande externe
est lancée
LOGNAME Nom de l’utiliateur connecté
TERM contient le type de terminal utilisateur
TMOUT indique une durée exprimée en secondes
du délai d’inactivité de l’utilisateur sur
le shell

Table 2: LIste des principales variables d’environnement

Complexe Universitaire Siantou


Cycle Licence profressionnelle
Gestion des Processus jnouedoni@yahoo.com
3.2 Variables d’environnement 6

3.2.2 Définition des variables d’environnement


Pour définir une variable d’environnement, le programmeur système peut
utiliser la syntaxes suivante:
Nomvariable=valeur
où nomvariable est un nom de variable et valeur la valeur associée à la variable
nomvariable. Exemple n=10 Pour fixer la valeur d’une variable au résultat
d’une commande, il faut utiliser la syntaxe suivante: variable=‘commande‘6
Exemple
res=‘ls -all /etc/Passwd‘

3.2.3 Exportation d’une variable d’environnement


Par défaut, les variables définies au niveau du shell ne sont pas transmises
aux commandes lancées à partir de celui-ci. Pour qu’elles le soient, il faut
demander au shell de les exporter. Un certain nonmbre de variables sont ex-
portées par défaut. La commande env affiche les variables connues du shell
courant qui sont exportées. Les variables utilisées par des processus autres
que le shell doivent obligatoirement être exportée pour être transmises. Une
variable exporter au niveau du shell sera transmise à tous les processus issus
de la même filiation, quel que soit le niveau de descendance. Pour exporter
une variable déjà définie, la syntaxe est :
export nomvariable
Pour définir et exporter une variable deux syntaxes possibles:
Nomvariable=valeur export nomvariable
ou
export nomvariable=valeur

3.2.4 manipulations des variables d’environnement


Pour détruire une variable d’environnement, la commande unsetpeut être
utilisée come suit: unset nomvariable
Pour modifier le contenu d’une variable d’environnement, en tapant la
commande : set variable = valeur
ou encore
variable =valeur
Pour afficher la valeur d’une variable d’environnement : cat $nomvariable

Complexe Universitaire Siantou


Cycle Licence profressionnelle
Gestion des Processus jnouedoni@yahoo.com
3.3 Variables utilisateur 7

3.3 Variables utilisateur


Ce sont des variables qui sont définies puis utilisées dans un script de com-
mandes.Les variables utilisateur n’ont pas besoin de déclaration préalable,
elles ne sont pas typées mais doivent toujours être initialisées. Par con-
vention, les variables utilisateurs sont toujours écrites en lettres minuscules.
Exemple de script de commande employant une variable utilisateur:
echo ”debut du script”
x=/etc
echo” le contenu du repertoire $x est”
ls -all $x —more
echo ”fin du script”
La commande echo permet d’afficher un message. Le message à afficher se
trouvant entre une paire de guillements. Une fois q’une variable utilisateur
pour la première fois, son utilisation est valable dans tout le reste du script.
Pour lire la valeur d’une variable au clavier, on peut utiliser la fonction read
de la manière suivante: read nomvariable
pour accéder au contenu d’une variable utilisateur, on peut aussi utiliser le
symbole $ de la manière suivante: $variable Pour afficher des messages ou des
valeurs à partir d’un script de commandes, on peut utiliser la fonction echo
d’une des manières suivantes7 : echo ” message” echo $message echo’message ’
exemple echo ”debut du script”
echo”entrer une valeur entière”
read x
echo”entrer la deuxième valeur”
read y
echo $x
echo ” $y”

4 paramètres ou arguments transmis à un script


Au cours de l’exécution d’un script de commande, certains paramètres peu-
vent être transmis directement en ligne de commande on dit alors d’eux
qu’ils sont des argments du script de commande. Pour avoir accès à ces
paramètres, les jokers suivants peuvent être utilisés: $ #, $@, $ 0,$ 1,$ 2,$
3, ... La signification de ces jokers est mentionnée dans le tableau ci-après :
exemple cp nom1 nom2
$ 0 = cp
7
le caractère ’(simple guillemet ne force pas l’interprétation du caractère $

Complexe Universitaire Siantou


Cycle Licence profressionnelle
Gestion des Processus jnouedoni@yahoo.com
4.1 shift 8

paramètres signification
$# retourne le nombre total d’arguments
transmis à un script
$* contient la liste de tous les arguments
tapés à la ligne de commande
$@ contient la liste de tous les arguments
figurant sur la ligne de commande
$? et un paramètre contenant la valeur
de retour de la dernière commande
exécutée dans un script
$0 paramètre indiquant le nom de la com-
mande sur la ligne de commande
$1 contient la valeur du premier argument
$2 contient la valeur du secon argument

Table 3: signification des paramètres d’un script

$ 1 = nom1
$ 2= nom2
$ * = cp nom1 nom2
$ # =3

4.1 shift
La commande shift permet de décaler la liste des arguments d’une ou plusieurs
positions vers la gauche. La syntaxe de cette commande est : shift[n]

5 Evaluation des expressions arithmétiques


Pour évaluer une expression arithmétique dans un script de commande,
utiliser la commande expr dont la syntaxe est la suivante:
expr $ var1 op $ var2 . . . $ varn
où var1, var2 . . . varn sont des variables et op désigne un opérateur arithmétique
pouvant être +,-,*,/ ,%
exemple le script suivant lit deux entiers et calcule leur produit
echo ”entrer la valeur du premier entier”
read x
echo”entrer la seconde valeur entière”
read y

Complexe Universitaire Siantou


Cycle Licence profressionnelle
Gestion des Processus jnouedoni@yahoo.com
5.1 tests et instructions conditionnels 9

echo”la somme de$x et $y est: ‘ expr $+$y‘ ”


echo” fin du script”

5.1 tests et instructions conditionnels


Pour effectuer des tests sur des fichiers, chaı̂ne de caractères et valeurs
numériques, le programmeur système utilise la commande test. Deux syn-
taxes pour cette commande sont possibles:
test expression
ou
[ expression ]
Dans la seconde syntaxe, celle recommandée, les crochets ouvrant et fermant
sont respectivement suivis et précédés d’un espace.

5.1.1 tests sur les fichiers

test valeur de retour


[ -a nomfichier ] vrai si le fichier, nomfichier existe
[ -e nomfichier ] vrai si le fichier, nomfichier existe
[ -s nomfichier ] vrai si le fichier,nomfichier n’est pas vide
[ -f nomfichier ] vrai si le fischie, nomfichier est de type ordinaire
[ -d nomfichier ] vrai si le fichier, nomfichier est un repertoire
[ -L nomfichier ] vrai si le fichier est un lien symbolique
[ -S nomfichier ] vrai si le fichier est un socket
[ -p nomfichier ] vrai si le fichier est un tube nommé
[ -r nomfichier ] vrai si le fichier est accessible en lecture
[ -w nomfichier ] vrai si le fichier, nomfichier est accessible en écriture
[ -x nomfichier ] vrai si le fichier, nomfichier est exécutable
[-O nomfichier] vrai si l’utilisateur est propriétaire du fichier

Table 4: Tests usuels sur les fichiers

5.1.2 Tests sur les valeurs numériques


exemple
echo” entrer un nombre entier”
read x
echo” entrer un autre entier”
read y

Complexe Universitaire Siantou


Cycle Licence profressionnelle
Gestion des Processus jnouedoni@yahoo.com
5.1 tests et instructions conditionnels 10

test valeur de retour


[ $n1 -eq $ n2 ] vrai si n1 est n2
[$ n1 -ne $ n2 ] vrai si n1 est 6= n2
[$ n1 -lt $ n2 ] vrai si n1 est n2
[$ n1 -le $ n2 ] vrai si n1 est ≤ n2
[$ n1 -gt $ n2 ] vrai si n1 est n2
[$ n1 -ge $ n2 ] vrai si n1 est ≥ n2

Table 5: Tests usuels sur les valeurs numériques

$ x -lt $ y

echo $?

5.1.3 Instruction if
Pour exprimer des instructions conditionnelles, deux alternatives sont offertes
:
if (commande)
then
commande1
commande2
...
else
instruction1
instruction2
...
fi

ou encore

if (commande)
then;
commande1
commande2
...
else
instruction1
instruction2
...

Complexe Universitaire Siantou


Cycle Licence profressionnelle
Gestion des Processus jnouedoni@yahoo.com
5.1 tests et instructions conditionnels 11

fi

commande est d’abord exécutée puis suivant qu ela valeur retournée soit
vrai ou faux commande1, commande2, . . . sont exécutées si commande ren-
voie vrai; dans le cas contraire instruction1, instruction2, . . . seront exécutée.
exemple
echo” entrer un nombre entier”
read x
echo” entrer un autre entier”
read y
if [ $ x -lt $ y ]
then
echo $x
else
echo $ y
echo” fin du script”

5.1.4 case
L’instruction case correspond à une instruction if imbriquée8

5.1.5 syntaxe de case


la syntaxe de case est :
case $ var cas1) cmde1;
cmde2;
...
cmden;;
cas2) inst1;
inst2;
...;
instn;;
. . . casn) instruction1;
instruction2;
...
instructionn;;
) i1;
i2;
8
instructions contenant plusieurs alternatives conditionnelles

Complexe Universitaire Siantou


Cycle Licence profressionnelle
Gestion des Processus jnouedoni@yahoo.com
5.1 tests et instructions conditionnels 12

...
in;;
esac La syntaxe if corrrespondante est : if [expression] then;
cmde1;
cmde2;
...
cmden;;
elif [expression2]
inst1;
inst2;
...;
instn;;
elif [expression3]
instruction1;
instruction2;
...;
instrutionn;;
else instruction1;
instruction2;
...
instructionn;;
fi

Le shell compare la valeur de la variable à chacun des modèles cités,


l’évaluation est faite de haut en bas. Lorsque la valeur correspond à l’un
des cas, les commandes relatives à ce dernier sont exécutées. Les caractères
;; représentent la fin du traitement et permettent de sortir du case pour
enclencher l’ exécution de celle sous le esac. Les modèles ou cas sont des
chaı̂nes de caractère pouvant inclure des caractères spéciaux dont la signifi-
cation est fournie dans le tableau de la page 4. Le dernier cas symbolisé par
le caractère * représente tous les autres cas possibles.

5.1.6 exemple d’ instruction case


Le script suivant lit un caractère et examine si le caractère est une consonne
ou voyelle.
echo” entrer un caractère”
read c
case “$c” “a”) echo”$c est une voyelle”;;
“e”) echo”$c est une voyelle”;;

Complexe Universitaire Siantou


Cycle Licence profressionnelle
Gestion des Processus jnouedoni@yahoo.com
6 instructions itératives 13

“i”) echo”$c est une voyelle”;;


“u”) echo”$c est une voyelle”;;
“y”) echo”$c est une voyelle”;;
“o”) echo”$c est une voyelle”;; *) echo”$c est une consonne”;;
esac
echo” fin du script”

6 instructions itératives
Les scripts de commande comportent des instructions permettant l’exécution
des itérations. ces instructins sont :

1. for

2. while

3. until

6.1 for
6.1.1 Syntaxe de for
for var in val1 val2 . . . valn
do
commande1
commande2
...
done
La struture de contrôle for permet de traiter une liste de valeurs représentées
par val1,val2, . . . , valn. A chaque tour de boucle, la variable var est ini-
tialisée avec l’une des valeurs de la liste (les valeurs sont traitées dans l’ordre
de leur énumération). La liste des valeurs peut être genérée directement par
substitution de caractères spéciaux du shell. Un cas particulier de l’usage
de la boucle for correspond au traitement des arguments d’une commande.
Dans ce cas la sytanxe est :
for var in $*
do
commande1
commande2
...

Complexe Universitaire Siantou


Cycle Licence profressionnelle
Gestion des Processus jnouedoni@yahoo.com
6.2 while 14

done

6.1.2 exemple de boucle for


le script ci-dessous considère plusieurs noms de fichier entrés en paramètre
et renvoie le type de fichier correspondant.
for fic in $*
do
if [ -f “$fic” ]
then
echo”$fic est un fichier ordinaire”
elif [ -d “$fic” ]
echo”$fic est un repertoire”
elif [ -e “$fic” ]
echo”$fic n est ni un fichier ni un repertoire”
else
echo ”$fic n existe pas”
fi
done
echo”fin du script”

6.2 while
6.2.1 Syntaxe
while commande
do
instruction1
instruction2
...
done
La structure de contrôle while permet d’ exécuter un bloc d’instructions tant
qu’une commande retourne le code vrai. A chaque tour de boucle, la suite
de commandes spécifiée entre do et done est exécutée. Dès que la commande
testée renvoie faux, le shell sort du while pour exécuter la commande située
immédiatement derrière le done.

Complexe Universitaire Siantou


Cycle Licence profressionnelle
Gestion des Processus jnouedoni@yahoo.com
6.2 while 15

6.2.2 exemple de boucle while


la boucle while suivante affiche tous les nombres impairs inférieurs à une
valeur numérique lue au clavier
echo ”entrer une valeur entière”
read n
i=1
while [ $i -lt $n ]
do
((i=i+2))
echo ”$i”
done
echo ”fin du script”

Complexe Universitaire Siantou


Cycle Licence profressionnelle
Gestion des Processus jnouedoni@yahoo.com

Vous aimerez peut-être aussi