0% found this document useful (0 votes)
61 views

Qu'est-Ce Qu'un Script ?: Initiation À La Programmation Shell

unix programmation To successfully reach its objectives and to deliver quality and innovation at every stage of the development, production and regulations, TPS is continuously monitoring, assessing and improving its services, technology and procedures.  Separation zone: in this area, the separator are placed, each separator is related to a specific pipeline coming from a production site.  Oil storage zone: the brut is stored in 4 different tanks (1A, 1B, 2a, 2B). The storage capacity is 16.000 bbls.  Water storage zone: 3 tanks are dedicated to store production water. The storage capacity is 5.000 bbls of water.  Rejection zone: a part of the production water is rejected in salt water disposal wells (SWDW). There is 2 SWDW in Tank Battery.  Loading zone: the brut is sent either to the Companie Française Tunisienne de Pétrole (CFTP) or to Skhira by loading camions.

Uploaded by

Radhi Hajjej
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
61 views

Qu'est-Ce Qu'un Script ?: Initiation À La Programmation Shell

unix programmation To successfully reach its objectives and to deliver quality and innovation at every stage of the development, production and regulations, TPS is continuously monitoring, assessing and improving its services, technology and procedures.  Separation zone: in this area, the separator are placed, each separator is related to a specific pipeline coming from a production site.  Oil storage zone: the brut is stored in 4 different tanks (1A, 1B, 2a, 2B). The storage capacity is 16.000 bbls.  Water storage zone: 3 tanks are dedicated to store production water. The storage capacity is 5.000 bbls of water.  Rejection zone: a part of the production water is rejected in salt water disposal wells (SWDW). There is 2 SWDW in Tank Battery.  Loading zone: the brut is sent either to the Companie Française Tunisienne de Pétrole (CFTP) or to Skhira by loading camions.

Uploaded by

Radhi Hajjej
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 6

Initiation la programmation Shell

Qu'est-ce qu'un script ?


Il arrive souvent qu'on ait faire une suite de commandes pour raliser une
opration complte, et qu'on ait souvent besoin de refaire cette suite de
commandes.
On peut alors penser mettre ces commandes dans un fichier et les excuter
ensuite. Un tel fichier de commandes est un script.
Exemple:
Supposons que l'utilisateur mohamed ait cr dans son rpertoire un rpertoire
nomm /user/mohamed/tmp, dans lequel il a l'habitude de mettre des
fichiers temporaires. Une bonne habitude serait de vider le contenu de ce
rpertoire avant de quitter sa session pour librer de l'espace disque.
Il va donc crer (avec vi par exemple) un fichier texte $HOME/nettoie
dans lequel il va mettre les commandes suivantes:
cd $HOME/tmp
rm `ls`
echo "Nettoyage termin"
Le fichier nettoie est un fichier texte qui contient des commandes.
Ce fichier n'est pas un fichier excutable. Pour le rendre excutable (au
sens dun shell) il faut lui donner lautorisation d'xcution:
HOST% chmod u+x $HOME/nettoie
HOST%
Avec son droit d'xcution, le fichier nettoie est devenu une nouvelle
commande!
Avant de quitter sa session, il suffira mohamed de lancer la commande
nettoie.
HOST% nettoie
nettoyage termin
HOST%
Bien que trs simple, cet exemple permet d'imaginer des scripts ralisant des
oprations plus complexes. On verra dans la suite que les scripts, comme toute
commande Unix peuvent avoir des options, des arguments et peuvent excuter
certaines oprations sous condition.
Par exemple, on pourrait amliorer le script prcdent en vrifiant d'abord que
le rpertoire /user/mohamed/tmp existe et est bien un rpertoire. Si tel
n'tait pas le cas, il enverrait un message d'erreur (/user/mohamed/tmp
n'existe pas par exemple) et ne ferait rien d'autre.
La possibilit d'excutions conditionnelles et de boucles permet de regarder les
scripts comme de vritables programmes dont les instructions sont les
commandes d'Unix.

Les variables
Dans un script on peut dfinir des variables. Ces variables ne peuvent
contenir que des chanes alphanumriques.
Un nom de variable doit commencer par une lettre et peut tre constitu de
lettres, de chiffres et "_" (underscore).
Exemples: var_1
v2 ma_variable
Affectation d'une variable

Sous sh,bash ou ksh, pour affecter une chaine alphanumrique valeur une
variable var il suffit d'crire:
var=valeur
Sept 2015

Initiation la programmation Shell

2
Si la chaine valeur contient des caractres spciaux(1) il faut l'enfermer entre
deux """ (guillemets doubles).
Exemples:
question="etre ou ne pas etre"
var2=12
(ce n'est pas une valeur numrique!!
il s'agit du caractre "1" suivi du caractre "2")
var3=
(affectation d'une chaine vide )
var4="cat fic1 fic2 > fic3"

Substitution d'une variable

Le contenu de la variable var est obtenu par $var.


Exemple:
Si vous excutez les lignes suivantes:
question="etre ou ne pas etre"
echo $question
vous verrez s'afficher l'cran:
etre ou ne pas etre
Par contre
echo question
donnera
question

Porte des variables

Une variable dfinie dans un script n'est reconnue qu' l'intrieur du script.
Pour la rendre accessible tous les niveaux infrieurs il faut utiliser la
commande export.

export var

Cette commande rend la variable var connue tous les niveaux infrieurs.

Les variables
prdfinies
Il existe des variables prdfinies dont les nom sont bass sur des caractres
particuliers (? #
$
!
)qui ont une signification
particulire.
?

$? donne l'tat de retour de la dernire commande excute.


L'tat de retour est un entier retourn par toute commande Unix (y compris les
scripts).
Sa valeur diffre suivant les commandes et donne une indication sur le
droulement de son excution.
En gnral un tat de retour gal 0 indique que la commande s'est bien
passe(2).
Exemple:
HOST% grep "mohamed ali" administrateurs
(rsultat)
HOST% echo $?
On verra s'afficher
0
si la chaine "mohamed ali" a t trouve
1
si la chaine "mohamed ali" n'a pas t trouve
2
s'il y a eu une erreur (3)

$# donne le nombre (4) d'arguments envoys au script .

0 1 2 3

$0 donne le nom de base du script


$1 donne le premier argument envoy au script
$2 donne le deuxime argument envoy au script
1 Caractres spciaux: " ' & $. , ; : ? * | ^ ( ) { } [ ] \ > < # + espace

tab

2 Consulter les rfrences pour savoir les tats renvoys par les diffrentes commandes.
3 Par exemple si le fichier administrateurs n'existe pas ou est inaccessible.
4 Sous forme de chaine de caractres
Sept 2015

Initiation la programmation Shell

3
etc

$$ donne le numro du processus (PID) du script.

$! donne le PID du dernier processus excut en tche de fond.


NOTE

Les variables d'environnement utilisateur sont aussi reconnues par le script


(voir plus haut: les variables d'environnement).

Commandes
Toutes les commandes Unix sont utilisables dans un script.
liste_de_commandes

On note liste_de_commandes une suite de commandes spares par un";" ou un


Return .
NOTE

L'tat de retour d'une liste_de_commandes est celui de la dernire commande


de la liste.

Droulement de
l'excution du script
Normalement les commandes d'un script sont excutes en squence dans
l'ordre o elles sont crites. Cependant il est possible d'avoir des excutions
conditionnelles et des boucles.
Boucle for

for nom in nom1 nom2 nom3 nomn


do
liste_de_commandes
done
La liste de commandes liste_de_commandes est excute n fois en affectant
chaque fois la variable nom une nouvelle valeur prise dans la liste nom1
nom2 nom3 nomn.
En gnral, une ou plusieurs commandes de liste_de_commandes utilise la
valeur de nom .
Exemple:
cd /user/mohamed/textes
for fic in t1 t2
do
chmod ugo+x $fic
done

Slection case

case $variable in
val1) liste_de_commandes_1;;
val2) liste_de_commandes_2;;

valn) liste_de_commandes_n;;
*) liste_de_commandes_x;;
esac
Si variable a l'une des valeurs val1 valn , la liste de commandes
correspondante est excute.
Sinon liste_de_commandes_xest excute.
Exemple:
case $#
0)
1)
2)
*)

in
echo
echo
echo
echo

Sept 2015

"Il
"Il
"Il
"Il

n'y
y a
y a
y a

a pas d'argument";;
un argument";;
deux arguments";;
plus de deux arguments";;

Initiation la programmation Shell

4
esac

excution conditionnelle if

if liste_de_commandes_1
then
liste_de_commandes_2
else
liste_de_commandes_3
fi
liste_de_commandes_1 est d'abord excute.
Si son tat de retour est 0, liste_de_commandes_2 est excute, sinon
liste_de_commandes_3 est excute.
Exemple:
if mkdir monrep
then
echo "le rpertoire monrep est cr"
else
echo "la cration de monrep a chou"
fi

test options commande

Suivant les options choisies, la commande test sert


tester l'tat des fichiers
comparer des chanes
comparer des entiers
Elle renvoie la valeur 0 pour "vrai" et 1 pour "faux" (sauf pour l'option -l)
Quelques options utiles:

test -f fic

Renvoie 0 si le fichier fic existe et n'est pas un rpertoire.

test chaine1 = chaine2

Renvoie 0 si les chanes sont identiques.

test chaine1 != chaine2

Renvoie 0 si les chanes sont diffrentes.

eq
ne
gt
test n1 - ge
lt
le

>
Renvoie 0 si l'entier n1 est l'entier n2
<

n2

[ options commande ]
NOTE

Est quivalent test options commande


La commande test est trs utilise dans les excutions conditionnelles if.
Exemple:
cd /user/mohamed/textes
if test -f t1
#quivalent if [ -f t1 ]
then
echo "le fichier t1 existe"
fi

Sept 2015

Initiation la programmation Shell


multi-test if

5
if liste_de_commandes_1
then
liste_de_commandes_01
elif liste_de_commandes_2
then
liste_de_commandes_02

elif liste_de_commandes_n
then
liste_de_commandes_0n
else
liste_de_commandes_x
fi
Exemple:
if [ $# =
then
echo
elif [ $#
then
echo
elif [ $#
then
echo
else
echo
fi

Boucle while

"0" ]
"Il n'y a pas d'argument"
= "1" ]
"Il y a un argument"
= "2" ]
"Il y a deux arguments"
"Il y a plus de deux arguments"

while liste_de_commandes_1
do
liste_de_commandes_2
done
Tant que l'excution de liste_de_commandes_1 a un tat de retour d'excution
0, liste_de_commandes_2 est excute.
Attention

Boucle until

Pour viter le risque de boucle infinie il faut imprativement que le


comportement de l'excution de liste_de_commandes_1 volue!!
until liste_de_commandes_1
do
liste_de_commandes_2
done
liste_de_commandes_2 est excute jusqu'
liste_de_commandes_1 ait un tat de retour 0.

Attention

ce

que

l'excution

de

Pour viter le risque de boucle infinie il faut imprativement que le


comportement de l'excution de liste_de_commandes_1 volue!!

Quelques commandes
utiles dans les scripts
expr expression

Evalue expression. Cette commande comprend de nombreuses options et a une


syntaxe possible de expression trs riche. Consulter la documentation
officielle.

getopts

Permet de connatre les options qui ont t donnes lors du lancement de


l'xcution du script. Le script peut ainsi tenir compte de ces options.

Sept 2015

Initiation la programmation Shell


6
read var
Permet d'arrter le droulement du script dans l'attente d'une donne au clavier.
Le droulement du script reprend ds que l'utilisateur a tap un Return .
Exemple:
echo -n "Quel est votre nom:"
read lenom
echo "Votre nom est: "$lenom
La variable lenom contient la chane de caractres tape par l'utilisateur.
exit code_retour

Lorsqu'un script excute sa dernire ligne, il excute automatiquement un


exit 0.
Le code retour du script est donc un 0.
Cependant, il arrive qu'un script ait besoin de se terminer ailleurs qu' sa
dernire ligne. Dans ce cas, il faut employer la commande exit.
Si on omet code_retour exit est quivalent exit 0.
Si la fin d'xcution que l'on a programm est due la dtection d'une erreur,
l'usage est de mettre un exit 1.
Exemple:
echo -n "Quel est votre nom:"
read lenom
if [ $lenom ]
then
echo "Vous n\'avez pas repondu"
exit 1
fi
echo "Votre nom est: "$lenom

Sept 2015

You might also like