[go: up one dir, main page]

0% ont trouvé ce document utile (0 vote)
531 vues14 pages

Programmation Shell Bash Sous Linux

Transféré par

BestCourse4u.com
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)
531 vues14 pages

Programmation Shell Bash Sous Linux

Transféré par

BestCourse4u.com
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/ 14

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# -

Vous aimerez peut-être aussi