Programmation Shell
Nicolas Dewaele
nicodewaele @ gmail.com
http://nicodewaele.free.fr
Programmation Shell
Table des matires
Programmation Shell.............................................................................................1
I- Introduction.................................................................................................2
Shell ?........................................................................................................2
Le Bash......................................................................................................2
II- Premiers scripts Shell.....................................................................................3
Syntaxe des scripts Shell.................................................................................3
Bonjour ....................................................................................................3
!x"cuter un script.........................................................................................3
Succession de commandes...............................................................................#
III- $aria%les et op"rations..................................................................................#
&"claration de 'aria%les..................................................................................#
(tilisation des 'aria%les )................................................................................*
+p"rations et op"rateurs arithm"ti,ues ).............................................................*
$aria%les pr"d"-inies par le Bash.......................................................................*
I$- Saisir une in-ormation et la stoc.er dans une 'aria%le............................................./
$- Structures conditionnelles.............................................................................../
0ests a'ec i- )............................................................................................../
!lse1 eli-.....................................................................................................2
Plusieurs conditions ).....................................................................................2
+p"rateurs de comparaison )............................................................................3
4ase )........................................................................................................5
Select )......................................................................................................5
$I- Boucles....................................................................................................16
La %oucle 7hile ) tant ,ue .............................................................................16
La %oucle until ) jus,u89 ................................................................................11
La %oucle -or )............................................................................................11
$II- Passage de param:tres................................................................................12
$III- ;edirections............................................................................................13
4ommande1< commande2..............................................................................13
4ommande1 =commande2=............................................................................13
;edirection 'ers une autre sortie > ).................................................................1#
;edirection des erreurs 2> )............................................................................1#
;edirection des entr"es ? ).............................................................................1#
I@- Aonctions..................................................................................................1*
@- Sur Internet ...............................................................................................1*
4ours et B ou 0P sur la programmation Bash )......................................................1*
&erni:res modi-ications le 36B63B11
- Page 1 -
Programmation Shell
Nicolas Dewaele
nicodewaele @ gmail.com
http://nicodewaele.free.fr
I- Introduction
Shell ?
Le Shell Cco,uille en anglaisD est le composant du syst:me d8exploitation ,ui permet de
interpr"ter les commandes tap"es au cla'ier Con l8appelle aussi interprteur de commandesD.
Eujourd8hui le Shell est en grande partie remplac" par les programmes -onctionnant a'ec une
inter-ace graphi,ue mais on s8en sert surtout pour automatiser des tFches gr9ce 9 la
programmation.
Parmi les Shells les plus connus1 il y a sous Gindo7s 5@ command.com1 sous H0 et
sui'ants cmd.exe et pour la partie graphi,ue explorer.exe. Sous (nix il en existe un certain
nom%re1 dont les plus connus sont les sui'ants ) Bourne Shell1 Bourne Again Shell1 I Shell1 4
Shell1 Jorn Shell1 ...
E l8heure actuelle1 des langages comme Perl1 Ruby ou Python prennent la rel:'e des
Shells sans toute-ois les remplacer totalement.
Le Bash
Le Bash reprend le shell originel de Linux CBourne ShellD et y int"gre des am"lioration
pro'enant d8autres Shells comme le Jsh et le 4sh.
4e programme est li%re Clicence KPLD et a "t" port" sur Gindo7s CCygwinD.
Lors des TP sur la programmation Shell nous utiliserons tou!ours le Bash.
Si "ous a"e# besoin une page de manuel existe pour le Bash $ man bash %
Ce site en est la traduction &ran'aise $
http$((www.linux)&rance.org(article(man)&r(man*(bash)*.html
Luel Shell utiliseM-'ous ?
&ans le -ichier BetcBpass7d1 il y a certaines in-ormations concernant les utilisateurs et
notamment le shell ,u8ils utilisent1 par exemple )
nico)x)1666)1666)nico)BhomeBnico)(bin(bash
Pour sa'oir tous les shells ,ui sont disponi%les sur 'otre machine1 'ous pou'eM taper )
ls (bin + grep sh
&erni:res modi-ications le 36B63B11
- Page 2 -
Programmation Shell
Nicolas Dewaele
nicodewaele @ gmail.com
http://nicodewaele.free.fr
II- Premiers scripts Shell
Syntaxe des scripts Shell
(n script Shell n8est rien d8autre ,u8un -ichier texte dans le,uel sont inscrites un certain
nom%re de commandes compr"hensi%les par 'otre interpr"teur de commandes. !tant donn" ,ue
Linux ne prend pas en compte les extensions des -ichiers1 'ous pou'eM nommer 'os -ichier de
script comme 'ous 'ouleM.
Pour indi,uer ,u8il s8agit %ien d8un script et non pas d8un -ichier texte classi,ue1 la
premi:re ligne doit toujours commencer par le nom de l8interpr"teur de commandes )
#!/bin/bash
... si 'ous utiliseM %ash
$ous pou'eM "crire autant de lignes de commentaires ,ue 'ous 'ouleM1 pour cela1 -aites
d"%uter 'otre ligne ou 'otre -in de ligne par N.
#!/bin/sh
echo Bonjour # Un commentaire
# Un autre commentaire
Bonjour !
Pour cr"er 'otre premier script ,ui a--ichera Bonjour 9 l8"cran1 'ous alleM "diter un
-ichier ,ue 'ous appeleM script1 a'ec 'i et 'ous alleM taper ceci 9 l8int"rieur )
#!/bin/bash
echo Bonjour
x!cuter un script
Pour ex"cuter le script ,ue 'ous 'eneM de cr"er1 'ous de'reM d8a%ord '"ri-ier ,ue 'ous
a'eM le droit d8ex"cuter ce -ichier Cnormalement1 non D. Pour cela -aites un ls -l du r"pertoire
dans le,uel se trou'e le -ichier.
ls -l
-rwxr-xr-x ... monfichier
$ous de'rieM a'oir un x pour a'oir le droit d8ex"cution1 si ce n8est pas le cas1 donneM 9
'otre -ichier le droit d8Otre ex"cut" en tapant )
chmod +x monfichier
Cette opration n,est - &aire .u,une &ois si "ous a"e# le droit d,excution
pas besoin de rpter cette tape.
$ous pourreM alors l8ex"cuter en tapant )
./monfichier
&erni:res modi-ications le 36B63B11
- Page 3 -
Programmation Shell
Nicolas Dewaele
nicodewaele @ gmail.com
http://nicodewaele.free.fr
Succession de commandes
Paintenant ,ue 'ous a'eM essay" un script %asi,ue a'ec la commande echo1 'ous pou'eM
ajouter 9 la suite autant de commandes shell ,ue 'ous 'ouleM. Par exemple )
#!/bin/sh
clear
echo -n Vous utilisez le systme
uname
echo
echo -n !a "ersion de "otre noyau est
uname -r
4e script 'a a--icher ,uel,ue chose comme Qa 9 l8"cran )
Vous utilisez le systme !inux
!a "ersion de "otre noyau est #.$.%-#-&%$
III- "aria#les et op!rations
D!claration de $aria#les
Il n8y a pas %esoin de d"clarer les 'aria%les comme en langage 41 par exemple. +n peut
directement a--ecter une 'aleur 9 une 'aria%le de cette -aQon )
'aria%leR'aleur
Par exemple )
nomR&upont
Les noms de "ariables doi"ent sui"re les r/gles sui"antes $
0"iter les caract/res spciaux ne pas commencer par un chi&&re.
%tilisation des $aria#les &
Pour utiliser les 'aria%les ,ui ont "t" a--ect"es1 on utilise le signe S.
echo Snom N 4eci a--ichera &upont 9 l8"cran
'p!rations et op!rateurs arithm!ti(ues &
Pour -aire des op"rations sur des 'aria%les1 'ous pou'eM utiliser la commande expr.
4ette commande s8utilise a'ec des 'aria%les de type num"ri,ue1 par exemple )
ex'r & ( + ) * # +ffichera % , l-.cran
ex'r /a ( 0 ) /b # +ffichera $ , l-.cran si /a "aut & et /b "aut #
!lle peut aussi s8utiliser a'ec des chaTnes de caract:res )
ex'r index /email 1 # cherche s-il y a un 1 dans la "ariable /email
# et ren"oie l-em'lacement de ce caractre
ex'r len2th /nom # ren"oie le nombre de caractres de la "ariable
ex'r substr /nom 3 * # ren"oie les * 'remiers caractres de /nom
Pour tout sa"oir sur expr "ous pou"e# &aire man expr %
&erni:res modi-ications le 36B63B11
- Page # -
Programmation Shell
Nicolas Dewaele
nicodewaele @ gmail.com
http://nicodewaele.free.fr
"aria#les pr!d!)inies par le Bash
Le %ash et le syst:me Linux d8une mani:re g"n"rale utilise ses propres 'aria%les pour
-onctionner1 par exemple le nom de l8utilisateur courant est stoc." dans une 'aria%le nomm"e
S(S!;. $ous pou'eM taper echo Suser pour 'oir ce ,u8elle contient.
# echo /U456
root
Les 'aria%les syst:me sont nomm"es en majuscules pour "'iter d8entrer en con-lit a'ec
les 'aria%les ,ue 'ous pourrieM cr"er.
1e nomme# donc pas "os "ariables en ma!uscules %
Les principales 'aria%les pr"d"-inies sont )
2345 C",ui'aut 9 6D r"pertoire de l8utilisateur
PAT2 r"pertoires contenant des -ichiers ex"cuta%les
4A7L chemin d8acc:s aux mails de l8utilisateur
4A7LC25C8 temps au %out du,uel un mail est trait"
79S caract:re de s"paration des arguments
T5R4 nom du type de terminal
PS* in'ite principale du shell en mode interpr"teur
PS: in'ite secondaire du shell en mode programmation
Pour "oir toutes les "ariables d,en"ironnement aux.uelles "ous pou"e# accder $
echo ; *et sans appuyer sur nter+ <TAB= <TAB=
I"- Saisir une in)ormation et la stoc,er dans une $aria#le
Pour cr"er un programme ,ui soit interacti-1 'ous pou'eM demander 9 l8utilisateur de
saisir des in-ormations et les utiliser par la suite gr9ce 9 des 'aria%les. Pour cela1 'ous pou'eM
utiliser la commande read sui'ie du nom de la 'aria%le dans la,uelle 'ous 'ouleM stoc.er
l8in-ormation )
echo Veuillez entrer "otre nom 7
read nom
echo Vous "ous a''ellez /nom
# Veuillez entrer "otre nom 7
# 8u'ont
# Vous "ous a''ellez 8u'ont
$ous pou'eM aussi demander 9 l8utilisateur d8entrer plusieurs 'aleurs en une seule -ois1
par exemple )
read nom9 'renom
echo Vous "ous a''ellez /'renom /nom
&erni:res modi-ications le 36B63B11
- Page * -
Programmation Shell
Nicolas Dewaele
nicodewaele @ gmail.com
http://nicodewaele.free.fr
"- Structures conditionnelles
-ests a$ec i) &
Pour '"ri-ier ,u8une ou plusieurs conditions sont remplies a'ant d8e--ectuer un
traitement1 on utilise sou'ent le i-1 par exemple )
if : /a2e -2e 3% ;<
then echo Vous etes majeur=e>
fi
lse. eli)
Le i- sert 9 imposer une condition pour e--ectuer un traitement. Le else CsinonD permet
de complOter le i- pour e--ectuer un traitement dans le cas ou la condition n8est pas remplie.
!xemple )
if : /a2e -2e 3% ;<
then echo Vous etes majeur=e>
else echo Vous etes mineur=e>
fi
Le eli- Celse i-D permet d8im%ri,uer plusieurs i- les uns dans les autres pour pou'oir traiter
tous les cas possi%les )
if : /feu ? (rou2e) ;<
then echo @-a"ancez 'as
elif : /feu ? (oran2e) ;<
then echo 6alentissez
else echo +llez-y
fi
Plusieurs conditions &
$ous pou'eM aussi com%iner un certain nom%re de conditions les unes apr:s les autres1
par exemple pour '"ri-ier ,ue l89ge entr" par l8utilisateur est situ" entre 6 et 166 )
if : /a2e -le A ; BB : /a2e -2e 3AA ;<
then echo lC-a2e entr. nC-est 'as correct
fi
Pour com%iner plusieurs conditions1 'ous pou'eM utiliser soit +( C << D1 soit !0 C UU D. Il s8agit
des op"rateurs logi,ues )
+( signi-ie soit l8un1 soit l8autre1 soit les deux.
!0 signi-ie l8un et l8autre o%ligatoirement.
&erni:res modi-ications le 36B63B11
- Page / -
Programmation Shell
Nicolas Dewaele
nicodewaele @ gmail.com
http://nicodewaele.free.fr
'p!rateurs de comparaison &
3prateur >escription 5xemple
3prateurs sur des &ichiers
-e fichier 'rai si fichier existe [ -e /etc/shadow ]
-d fichier 'rai si fichier est un r"pertoire [ -d /tmp/trash ]
-- fichier 'rai si fichier est un -ichier ordinaire [ -f /tmp/glop ]
-L fichier 'rai si fichier est un lien sym%oli,ue [ -L /home ]
-r fichier 'rai si fichier est lisi%le CrD [ -r /boot/vmlinuz ]
-7 fichier 'rai si fichier est modi-ia%le C7D [ -w /var/log ]
-x fichier 'rai si fichier est ex"cuta%le CxD [ -x /sbin/halt ]
fichier1 -nt fichier2 'rai si fichier1 plus r"cent ,ue fichier2 [ /tmp/foo -nt /tmp/bar ]
fichier1 -ot fichier2 'rai si fichier1 plus ancien ,ue fichier2 [ /tmp/foo -ot /tmp/bar ]
3prateurs sur les cha?nes
-M chaine 'rai si la chaine est 'ide
[ -z "$V!" ]
-n chaine 'rai si la chaine est non 'ide
[ -n "$V!" ]
chaine1 R chaine2 'rai si les deux chaTnes sont "gales
[ "$V!" " "totoro" ]
chaine1 R chaine2
'rai si les deux chaTnes sont
di--"rentes
[ "$V!" #" "tonari" ]
3prateurs de comparaison numri.ue
num1 -e, num2 "galit" [ $nombre -e$ %& ]
num1 -ne num2 in"galit" [ $nombre -ne %& ]
num1 -lt num2 in-"rieur C ? D [ $nombre -lt %& ]
num1 -le num2 in-"rieur ou "gal C ? RD [ $nombre -le %& ]
num1 -gt num2 sup"rieur C > D [ $nombre -gt %& ]
num1 -ge num2 sup"rieur ou "gal C > RD [ $nombre -ge %& ]
La ngation d,une comparaison se &ait a"ec %
!xemple de n"gation )
Si ce r"pertoire n8existe pas on le cr"e )
if : ! -d /re'ert ;<
then mDdir /re'ert<
fi
&erni:res modi-ications le 36B63B11
- Page 2 -
Programmation Shell
Nicolas Dewaele
nicodewaele @ gmail.com
http://nicodewaele.free.fr
/ase &
La structure case permet de -aire un traitement di--"rent en -onction de la 'aleur d8une
'aria%le1 par exemple )
#!/bin/bash
echo Euel est "otre F4 'r.f.r. G
5cho 3- Hindows #- !inux &- Iac F4 J- +utre
read /choix
case ( /choix ) in
3> echo ( Vous 'r.f.rez Hindows ) <<
#> echo ( Vous 'r.f.rez !inux )<<
&> echo ( Vous 'r.f.rez Iac F4 )<<
J> echo ( Vous 'r.f.rez un autre F4 )<<
else > echo ( Vous de"ez ta'er un nombre entre 3 et J ! )<<
esac
# Euel est "otre F4 'r.f.r. G
#
Vous 'r.f.rez !inux
Select &
Le select est une extension du case. La liste des choix possi%les est -aite au d"%ut et on
utilise le choix de l8utilisateur pour e--ectuer un mOme traitement.
!xemple )
select systeme in KHindowsK K!inuxK KB48K KIac F4K KI4 8F4K
do
echo KVotre systme fa"ori est /systeme.K
breaD
done
4e ,ui cr"era automati,uement un menu et donnera 9 l8"cran )
3> Hindows
#> !inux
&> B48
J> Iac F4
*> I4 8F4
#G J
Votre systme fa"ori est Iac F4.
&erni:res modi-ications le 36B63B11
- Page 3 -
Programmation Shell
Nicolas Dewaele
nicodewaele @ gmail.com
http://nicodewaele.free.fr
"I- Boucles
Les %oucles ser'ent en g"n"ral 9 deux choses )
$"ri-ier ,u8une in-ormation saisie par l8utilisateur est correcte et lui -aire recommencer la
saisie tant ,ue ce n8est pas correct
;ecommencer un certain nom%re de -ois la mOme suite de commandes
d8autre part elles -onctionnent toujours a'ec ces trois crit:res )
(ne "aleur de dpart
(ne condition d8entr"e ou de sortie
(ne incrmentation
Les %oucles Ghile et (ntil testent une condition a"ant d8e--ectuer le traitement1 ce ,ui
'eut dire ,u8il se peut ,u8on n8entre jamais dans la %oucle.
7l n,y a pas d,.ui"alent de rpter ... !us.u,- ... en langage Shell
La #oucle while & tant (ue 0
Ghile signi-ie tant ,ue1 ce ,ui 'eut dire ,ue la %oucle sera ex"cut"e tant ,ue la condition
est respect"e.
!xemples )
i?3 # Valeur de d.'art 3
while : /i -le * ;< do # Londition de sortie 7 i M *
echo tour de boucle nN /i
i ? Oex'r i (+) 3O # Pncr.ment de 3 'ar tour de boucle
done
continuer?o # Valeur de d.'art (o)
while : /continuer ? (o) ;< do # condition de sortie 7 'as o
echo Voulez-"ous recommencer G o/n
read continuer # @ou"elle "aleur de continuer
done # =Qui rem'lace l-incr.ment>
4ette %oucle continue tant ,ue l8utilisateur entre o.
&erni:res modi-ications le 36B63B11
- Page 5 -
Programmation Shell
Nicolas Dewaele
nicodewaele @ gmail.com
http://nicodewaele.free.fr
La #oucle until & jus(u12 0
(ntil signi-ie jus,u891 ce ,ui 'eut dire ,ue la %oucle sera ex"cut"e jus,u89 ce ,ue la
condition soit respect"e.
!xemples )
i?3 # Valeur de d.'art 3
until : /i -2t * ;< do # Londition de sortie 7 i M *
echo tour de boucle nN /i
i ? Oex'r i (+) 3O # Pncr.ment de 3 'ar tour de boucle
done
continuer?o # Valeur de d.'art (o)
until : /continuer ? (n) ;< do # condition de sortie 7 n
echo Voulez-"ous recommencer G o/n
read continuer # @ou"elle "aleur de continuer
done # =Qui rem'lace l-incr.ment>
4ette %oucle continue jus,u89 ce ,ue l8utilisateur entre n.
La #oucle )or &
E priori1 la %oucle -or est utilis"e ,uand on 'eut ex"cuter un ensem%le de commandes un
nom%re pr"cis de -ois.
!xemple )
echo Lombien "oulez-"ous dC-.toiles G
read nombre
for i in OseQ /nombreO
do
echo -n C0
done
Lombien "oulez-"ous d-.toiles G
J
0000
La commande se, sert - a&&icher une liste de nombre $
se. @ a&&ichera - l,cran * : @
se. @ A a&&ichera - l,cran @ B A
se. * : C a&&ichera - l,cran * @ A C
!n shell la %oucle -or est %eaucoup utilis"e pour traiter les -ichiers1 par exemple )
echo Le scri't "a renommer tous les fichiers en y ajoutant "otre nom
for fichier in OlsO
do
if : ! -d /fichier ;< then
fichierdest?/U456--/fichier
m" /fichier /fichierdest
fi
done
&erni:res modi-ications le 36B63B11
- Page 16 -
Programmation Shell
Nicolas Dewaele
nicodewaele @ gmail.com
http://nicodewaele.free.fr
"II- Passage de param3tres
!n g"n"ral pour utiliser une commande1 on l8appelle par son nom1 sui'i d8un certain
nom%re de param:tres1 par exemple pour d"placer un -ichier )
m' -ichier r"pertoireB
1 2 3
1 ) commande
2 ) param:tre 1
3 ) param:tre 2
L8a'antage d8utiliser des param:tres est ,ue lors,u8on lance le programme1 il n8y a pas 9
-aire inter'enir l8utilisateur donc le script peut s8ex"cuter sans ,ue personne ne tape ,uoi ,ue ce
soit au cla'ier. Pour passer un param:tre 9 'otre programme1 il 'ous -aut -aire comme a'ec
n8importe ,uelle commande )
nomDdeD"otreDscript param/tre* param/tre:
Luand un utilisateur appelle 'otre programme en y ajoutant des param:tres1 'ous de'eM les
r"cup"rer dans des 'aria%les. Pour cela il existe des 'aria%les sp"ciales )
;* - ;E $ contienne le @i:me param:tre pass"
;F $ contient tous les param:tres ,ui ont "t" pass"s
;G $ contient ne nom%re de param:tres ,ui ont "t" pass"s
;H $ contient le nom du script lui-mOme
;; $ contient le num"ro de processus du shell lui-mOme
!xemple de script utilisant des param:tres )
#!/bin/sh
echo Vous a"ez 'ass. les /# 'aramtres sui"ant 7
echo 'aramtre 3 7 /3
echo 'aramtre # 7 /#
echo 'aramtre & 7 /&
echo 'aramtre J 7 /J
echo Fn 'eut aussi les afficher tous dC-un cou' 7 /0
!n appellant ce programme comme ceci1 on o%tient )
# monRscri't 3A abc toto S3
Vous a"ez 'ass. les J 'aramtres sui"ant 7
'aramtre 3 7 3A
'aramtre # 7 abc
'aramtre & 7 toto
'aramtre J 7 S3
Fn 'eut aussi les afficher tous d-un cou' 7 3A abc toto S3
&erni:res modi-ications le 36B63B11
- Page 11 -
Programmation Shell
Nicolas Dewaele
nicodewaele @ gmail.com
http://nicodewaele.free.fr
"III- 4edirections
La sortie standard de la r"ponse d8une commande est l8"cran. &ans certains cas1 on a
%esoin d8utiliser la r"ponse d8une commande comme param:tre d8une autre commande. Pour
cela1 il -aut utiliser des redirections.
commande56 commande7
Le pipe permet de ren'oyer le r"sultat d8une commande 9 une seconde commande la cas
le plus -r",uent de son utilisation est pour rechercher un texte dans le r"sultat d8une commande
,ui nous est -ourni.
Par exemple ) La commande ps ax liste tous les processus ,ui tournent. La liste "tant
longue1 on limite l8a--ichage en passant le r"sultat de cette commande 9 grep ,ui ne 'a sortir
,ue les lignes contenant le texte apache.
# 's ax B 2re' a'ache
3%S# G 4 A7AA /usr/sbin/a'ache
3%S& G 4 A7AA /usr/sbin/a'ache
/ommande5 8commande78
4ette redirection permet de passer la commande de droite comme param:tre de la
commande de gauche. 48est donc l8in'erse de la redirection <.
Par exemple pour regarder le contenu de tous les -ichiers du r"pertoire courant ) +n en'oie la
liste des -ichiers ClsD 9 la commande cat.
# cat OlsO
contenu des fichiers ...
...
4edirection $ers une autre sortie 9 &
La sortie par d"-aut "tant l8"cran1 il se peut ,ue 'ous 'oulieM r"cup"rer les sorties pour
les "crire soit dans un -ichier1 soit 'ers une autre sortie.
&8une mani:re g"n"rale on indi,ue la sortie ,ue l8on 'eut gr9ce 9 > .
!xemple d8"criture d8une sortie dans un -ichier )
echo Bonjour M /home/toto/bjour # .crit Bonjour dans le fichier bjour
Ettention1 le signe > remplace ce ,u8il y a'ait dans le -ichier par la sortie de la commande. S8il
s8agit d8un nou'eau -ichier il le cr"e.
Pour "crire 9 la suite d8un -ichier existant1 il -aut dou%ler le signe ) >>
echo je suis /U456 MM /home/toto/bjour # .crit je suis Toto
# , la suite du fichier bjour
E la suite de ces deux commandes1 le -ichier %jour contient )
Bonjour
je suis Toto
&erni:res modi-ications le 36B63B11
- Page 12 -
Programmation Shell
Nicolas Dewaele
nicodewaele @ gmail.com
http://nicodewaele.free.fr
4edirection des erreurs 79 &
&8autre part1 si on 'eut "'iter d8a--icher les erreurs sur la sortie standard1 on peut les
rediriger 'ers un p"riph"ri,ue inexistant CBde'BnullD1 par exemple )
ls -l #M /de"/null
:= signi-ie V les messages d8erreur sont redirig"s 'ers ... W
4edirection des entr!es : &
E l8in'erse1 l8entr"e standard "tant le cla'ier1 'ous pou'eM r"cup"rer le contenu d8un
-ichier en entr"e. &ans ce cas le signe est in'ers" ) ?
!xemple a'ec le -ichier noms.txt ,ui contient ceci )
8u'ont
read /nom U noms.txt
La ligne ci-dessus r"cup:re la ligne de noms.txt dans la 'aria%le Snom.
I;- <onctions
4omme pour les autres langages de programmation1 les scripts Bash peu'ent -aire appel 9
des -onctions.
La dclaration de &onction se -ait comme suit )
-unction nom CD X
commandes Y
Z
L8appel d8une -onction se -ait en "cri'ant son nom. +n peut lui passer des param:tres
comme on le -ait pour une commande.
Attention on ne peut appeler une &onction .ue si elle a t dclare a"ant %
!xemple de -onction et de son appel )
#!/bin/sh
# 8.claration de la fonction 7
function multi'lier=>
V
resultat?Oex'r /3 K0K /#O
echo /resultat
W
echo Veuillez entrer deux nombres
read nb3
read nb#
# +''el de la fonction 7
multi'lier /nb3 /nb#
&erni:res modi-ications le 36B63B11
- Page 13 -
Programmation Shell
Nicolas Dewaele
nicodewaele @ gmail.com
http://nicodewaele.free.fr
;- Sur Internet 0
/ours et = ou -P sur la programmation Bash &
http)BB777-phase.c-stras%ourg.-rBin-ormBlinuxBcoursBuserBnode1.html
http)BB777.linux-pour-lesnuls.comBshell.php
http)BB777.la%o-linux.orgBcoursBmodule-1Bchapitre-11-scripting-%ashB
&erni:res modi-ications le 36B63B11
- Page 1# -