Sie sind auf Seite 1von 55

Shell Script do zero

ndice
Captulo 1 - Bsico do Bsico
Captulo 2 - Variveis
Captulo 3 - Operadores Lgicos de comparao
Captulo 4 - Codio !" e escrevedo o primeiro script
Captulo # - Operadores Lgicos de Coe$o
Captulo % - &sado os Coectores
Captulo ' - "a(edo loops com o )*or+ e script remoto
Captulo , - -.ile e &til
Captulo / - Opera0es matemticas e iiciali(ao de scripts
Captulo 11 - Comado case
Captulo 11 - "uo e 2ar3metro
Captulo 12 - Comados sed4 cut4 pipelie4 tr e grep
Captulo 13 - 5ltimos comados
Captulo 14 - !detao
Captulo 1# - 6cript com 7aelas
Captulo 1 Bsico do Bsico
Apresentao
8ste material 9 dedicado para a:ueles :ue o sa;em ada de lgica de programao e 6.ell
6cript4 os captulos a seguir voc< ser capa( de criar scripts ;sicos a mediaos e ter todas as
codi0es de se apro*udar o tema so(i.o4 procuro sempre dar muitos e$emplos para :ue voc<
eteda de um 7eito ou de outro e procure ler devagar para coseguir assimilar o material=
>o se preocupe se os coceitos apresetados at9 o captulo 3 *icarem vagos4 a partir do
captulo 4 tra;al.aremos a prtica e tudo *icar mais *cil= "aa os e$erccios ates de ver a
respostas4 por:ue a teoria a programao sem prtica dei$a muito a dese7ar=
8sclarecedo :ue sei pouco4 mas 7utado este pouco com criatividade e persist<cia4 eu
cosigo *a(er muita coisa=
O que Shell Script
6cript 9 um ar:uivo com vrias istru0es para serem e$ecutadas pelo s.ell :ue 9 o
iterpretador de comados= Com ele podemos automati(ar muitas tare*as o Liu$ criado grades
*acilidades=
Prieiros Coandos
2odemos usar :ual:uer comado os ossos scripts4 desde comados criados por voc<
mesmo ?colocado o script detro de @;iA4 programas de terceiros e :ue tem seus comados o
termial e pricipalmete algus comados do s.ell :ue so muito usados em scripts e pouco
co.ecidos o termial= Vamos v<-los agoraB
Coando !escrio Sinta"e
ec.o 8$i;e o te$to a tela ec.o )te$to a ser mostrado+
sleep C um tempo ates de cotiuar e$ecutado sleep segudos e"eplo# 6leep 1
read Dece;e o valor de uma varivel ?veremos aidaA read varivel e"eplo# read dados
E 8screve um ar:uivo-te$to (apagando o que estava l) ec.o )te$to+ E @.ome@lui(@ar:uivo
EE 8screve um ar:uivo-te$to (ltima linha, no apaga) ec.o )te$to+ EE @.ome@lui(@ar:uivo
F Doda o comado em 2G plao e cotiua o script ComadoF
e$it 6ai do script e$it
touc. Cria ar:uivos-te$to touc. omeHdoHar:uivo
I Cometa tudo depois deste sm;olo I Cometrio
J Cometar :uer di(er :ue a li.a 9 um te$to e uca ser e$ecutada
$"eplo destes coandos no script
K claro :ue o script a seguir o tem muito setido4 9 s para visuali(armos a aplicao dos
comados apresetados ateriormete=
Coandos ais conhecidos
6o os comados :ue estamos acostumados a usar o termial e podemos us-los tam;9m
o script4 se voc< o os co.ece4 v aprededo de acordo com a ecessidade4 pes:uise a iteret
e cosulte a ta;ela resumida a;ai$o sempre :ue preciso=
!iret%rios
Coando Sinta"e !escrio
rm -r* rm -r* Ldiretrio Celeta ar:uivos@pastas e tudo :ue estiver detro ?cuidadoA
pMd pMd Nostra em :ual diretrio estamos
c.mod c.mod ''' ar:uivoHouHpasta Nuda as permiss0es4 ''' O permisso total
c.oM c.oM userBgrupo ar:HouHdiret= Nuda o proprietrio de ar:uivos e pastas
cd cd diretrio 8tra em diretrios
&surios
Coando Sinta"e !escrio
useradd useradd lui( -g aluos ?o grupoA Pdicioa um usurio
userdel userdel usurio Celeta usurio e seus ar:uivos
groupdel groupdel grupo Celeta um grupo
groups groups omeHusuario Nostra os grupos do usurio
addgroup
addgroup usuario grupo ou addgroup omedogrupo
Cria um grupo ou adicioa um usurio ao grupo
sudo sudo comado 8$ecuta comados como root
M.oami M.oami !deti*ica com :ual usurio voc< esta logado
O ec.o va(io salta uma li.a a tela4 para :ue o *i:ue tudo 7uto
Nostrado a *raseB Bem vido4 a tela
O comado apt-get roda em 2G plao e o script cotiua e$ecutado
Cometrios
&sado o iterpretador de
comados ;as.
'ede
Coando Sinta"e !escrio
i*co*ig i*co*ig Nostra as iter*aces de rede
.ostame .ostame Nostra ou muda o ome de seu computador a rede
pig 2ig ipHdese7ado Cispara pacotes para outro pc4 para testar coe$0es etc
Sistea
Coando Sinta"e !escrio
Qillall Rillall omeHdoHprograma Nata um processo
M.atis -.atis Lome do programa Cescreve o :ue *a( o comado
di** di** ar:uivo1 ar:uivo2 Compara 2 ar:uivos
ps ps -el* Nostra os programas :ue esto rodado
cat cat ar:uivoHte$to Nostra o coteSdo de um ar:uivo de te$to
grep Comado T grep palavra "iltra a sada do comado4 mostra a li.a da palavra pedida
l l -s ar:uivoHorigial atal.o Cria atal.o
cp cp ar:uivo destio Copia um ar:uivo ou diretrio ?-D para diretriosA
apt-get apt-get omeHprograma !stala aplicativos
*id "id Lome 2rocura por ar:uivos e diretrios
Copactao
(ar)*z +A elhor e tepo ,s copactao-
Coando .uno !escrio
tar -(c* ovo=tar=g( pastaHouHar:uivo Compactar (O(ip cOcompact *O*ile
tar -($* pastaHouHar:uivo Cescompactar $Oe$trair (O(ip *O*ile
(ar +Apenas /unta-
Coando .uno !escrio
tar -c* ar:uivoHovo=tar ar:uivo Ppeas 7utar os ar:uivos -c comprimir -* *ile
tar -$* ar:uivo=tar 8$trair -$ e$trair -* *ile
'ar
Coando .uno !escrio
rar a ovo=rar ar:uivo Compacta a O Pdicioa
urar ar:uivo=rar Cescompacta
(ar)"z +Copacta ais-
Coando .uno !escrio
tar -Uc* ar:uivoHovo=tar=$( ar:uivo Compactar -U O $( -c cria -* *iles
tar -U$* ar:uivo=tar=$( Cescompactar -$ e$trai -2 preserva
permiss0es
Captulo 0 1ari,eis
6o muitos os valores :ue lidamos a programao e eles variam muito4 por isto 9 :ue
e$istem as variveis4 elas podem assumir :ual:uer valor um9ricos ou al*aum9ricos a :ual:uer
mometo=
2ortato4 varivel 9 um ome com um valor detro dela :ue *ica arma(eado a memria
para ser usado :uado preciso= ?seu ome uca comea com SmeroA=
$"epli2icando#
2osso criar um script :ue ecessite col.er o ome de aluos4 mas a cada rodada o ome ser
di*erete4 eto eu posso criar a varivel PL&>O :ue arma(ear este valor detro dela=

$"eplos de coo colher os dados para a ,ari,el#
>o se preocupe em decorar estes comados4 procure eteder o raciocio=

1oc3 eso d o ,alor dentro do script
P:ui ao iv9s de c.amar de varivel4 podemos c.am-la
de costate4 7 :ue o valor Uoata o muda4 a o ser
:ue voc< crie outra li.a modi*icado este valor
'ece4endo o ,alor di*itado pelo usurio
Ode )read+ 9 o comado para :ue o usurio
digite o valor da varivel em :uesto
Pe*ando o ,alor de u arqui,o5te"to
O valor da varivel ser o resultado do comado detro
dos par<teses4 este caso mostra o coteSdo do ar:uivo matricula=
PL&>OOV+Uoata+
PL&>OOV?cat @etc@matriculaA
2ara co*udir meos4 9 recomedado escrever as variveis com letras maiSsculas
e em precisa *alar :ue o se pode escreve-las com aceto=
Com o sim;olo )V+ ates da varivel4 prevalece o valor :ue esta detro dela=
$"eplo# Cetro da varivel )"PW8D+ te.o este valor X )mQdir programa+
>o script digito uma li.a assimB V"PW8D
O :ue vai acotecer YYY
O s.ell vai dar o comado )mQdir programa+ criado o diretrio pedido
2or causa do sim;olo ele cosidera o coteSdo
ValorB
6urico X >Smeros arma(eados ?para *a(ermos cotasA
Al2anuricos X 2odem ser Smeros4 te$tos ou os dois 7utos4
o importate sa;er 9 :ue sempre ser cosiderado como um te$to
O Liu$ 9 case sesitive4 ou se7a4
se escreveu determiada varivel
em maiSscula4 voc< o pode
mudar para miuscula o meio do
6cript4 por:ue ele reco.ece como
outra palavra=
ec.o )Cigite o ome do aluo+
read PL&>O
Ps varia0es so muitas4 pes:uise e teste a medida :ue precisar=
P:ui 2!>Z1 ser o resultado de dois
2igs4 depois seu valor 9 gravado o
Pr:uivo @.ome@log 7utamete com
a data= ?9 )-M 3+ para sair 2 pigsA
K ormal usarmos variveis pegado valores :ue
evolvem outras variveis4 a:ui eu uso o comado
ps e a varivel V2DOZ para ac.armos a li.a de
algum programa4 e o resultado deste
comado ser o valor de VDOCP>CO=
>este caso o valor da varivel o importa4
pois4 sua utilidade 9 de apeas parar a tela e$i;ida
para :ue o usurio possa ler a mesagem e d< eter
para prosseguir=
>este caso o usurio digita o ome do programa4 e a varivel 2PCO[8 usa
este resultado4 e$eB se o usurio digitar mpla\er4 a varivel 2PCO[8 ter o
ValorB )protecmpla\er+=
Captulo 7 5 Operadores l%*icos de coparao
>s vamos ver estes operadores detro de um determiado cote$to4 pois 9 o :ue
ecessitamos por e:uato4 :ual:uer *uo :ue se7a um pouco di*erete do descrito a:ui
a;ordaremos depois do captulo '=
Os operadores lgicos de comparao mostram ao s.ell uma codio a ser testada4 o
resultado do teste pode ser ,erdadeiro ou 2also4 este resultado 9 usado por vrios comados ?vamos
eteder estes comados a medida do possvelA4 um deles e um dos mais importates 9 o !"4 :ue
veremos em ;reve=
O :ue podemos eteder como ,erdadeiro e 2also8
O coteSdo destes comparadores podem ser nuricos ou Al2anuricos ?vai *a(er
comparao :ue ecessita cosiderar o Smero matematicamete4 eto 9 um9rico o resto 9
al*aum9ricoA4 por e$emplo4 se eu vou lidar com Smeros de cadastros de *uciorios vou
cosider-los Pl*aum9ricos por:ue al9m de o ter cota4 eu s vou ler como se *osse um te$to4 7
o um9rico pode ser :uatidade4 comparao ?1 meor :ue 2A4 clculos etc= >uca poderemos
co*udir estas duas categorias=
Coparadores 6uricos
-lt >Smero 9 meor :ue ?Less [.aA
-gt >Smero 9 maior :ue ?Zreater [.aA
-le >Smero 9 meor ou igual ?Less 8:ualA
-ge >Smero 9 maior ou igual ?Zreater 8:ualA
-e: >Smero 9 igual ?8]ualA
-e >Smero 9 di*erete ?>ot 8:ualA
$"epli2icando#
6upodo :ue a varivel A tem o valor de 79 e B tem o valor de 094 eto poderamos ter as
seguites situa0esB
$le no e"ecuta o coando: porque a condio no satis2eita: pois: A no enor que B)
se ^ VP 5lt VB _` eto *aa ?se P 9 meor :ue B eto *aa o comadoA
comado
P *rase a;ai$o4 por mais o;via :ue se7a4 ela 9 verdadeiraB
4 9 meor :ue #
8sta tam;9m 9 verdadeiraB
O ome camila 9 di*erete do ome Uulia
2or *im4 esta 9 *alsaB
#1 9 di*erete de #1
Codio
"alsa
8stes operadores so
*udametais em
scripts@programao=
6este caso: ele e"ecutaria o coando: porque a condio satis2eita: / que A di2erente de B
se ^ VP 5ne VB _` eto *aa
comado
Coparadores Al2anuricos
O [e$to 9 igual
aO [e$to 9 di*erete
- [e$to o ulo
-( [e$to 9 ulo
6upo.amos agora :ue A cot9m a palavra )noite+ e B cot9m a palavra )dia+4 etoB
Aqui ele no e"ecuta o coando: porque A no i*ual a B)
se ^ VP ; VB _` eto *aa
comado
Aqui ele e"ecuta o coando: / que A di2erente de B)
se ^ VP <; VB _` eto *aa
comado
Com o )-+ ele e$ecutar o comado caso a varivel te.a algum valor4 7 com o )-(+4 s
e$ecutar se a varivel estiver va(ia= 8m;ora este7a a ta;ela de al*aum9ricos eles tam;9m
*ucioam se a varivel coter apeas Smeros= Vamos ver como escrev<-los o pr$imo captulo=
Codio
Verdadeira
Captulo = Condio >. e escre,endo o prieiro script
Condio >.
>o igl<s )i*+ sigi*ica )se+4 ?68 a codio *or satis*eita eu e$ecuto o comadoA4 codio
:ue ser testada usado o coceito aterior= 6e o teste de comparao acusou verdadeiro ele e$ecuta
o comado :ue est detro do i*4 o teste acusado *also ele pula este i* e segue com o script=
2ese os operadores de comparao como se *ossem c.aves e o i* sedo a porta4 se a c.ave
*or )verdadeira+ ela a;re a porta e e$ecuta o :ue tem l detro4 se a c.ave *or *alsa o s.ell o
cosegue a;rir a porta e cose:uetemete o e$ecuta= >este captulo aprederemos como
escrev<-lo a liguagem do s.ell e cose:uetemete o primeiro script=
$strutura do i2
i* ^ codio _`t.e
comado
*i
$"eplo na lin*ua*e do shell#
X8spao o;rigatrio
P palavra 7ulia est etre aspas por:ue 9 um te$to ?um9ricos *icam sem aspasA4 a mesma coisa vale
para a varivel=
i* ^ bV&6&PD!Ob O b7uliab _`t.e
mQdir V&6&PD!O
*i
Coando au"iliar $lse
&ma *uo complemetar e muito Stil o comado i* 9 o else ?seoA4 caso a codio do i*
o se7a verdadeira4 ele automaticamete e$ecuta o :ue est o else4 seu uso 9 opcioal=
Sentido do coando Sinta"e no shell
se ^ codio 9 verdadeira _` ento e"ecute o coando
mQdir V&6&PD!O
seno e"ecute este outro coando
mQdir V&6&PD!O2
i* ^ codio _`t.e
comado
else
comado
*i
A4ai"o u e"eplo escrito no editor de te"to#
(raduo ?
Se o coteSdo da varivel &6&PD!O 9 igual a palavra 7ulia eto e$ecute o comado4
:ue o caso cria um diretrio com o ome de 7ulia=
- i* X P;re o comado
- Codio X Codio comparativa para e$ecuo dos comados detro do i*
- Comado X ]ual:uer comado do s.ell e :uatos voc< :uiser
- *i X "ec.a o i* ?escrito ao cotrrioA
>o 6.ell
Se a varivel 86[PCO 9 di*erete de )desligado+4 eto e$ecute o comado Qillall=== seno ===
Pgora :ue sa;emos escrever a codio i*4 vou mostrar como se escreve os operadores
lgicos de comparao )-+ e )-(+4 prometidos ateriormete4 eles so escritos ates da varivel a
ser comparada como ula ou o ula=
6upodo :ue voc< ecessite rodar um comado apeas se a varivel coseguiu col.er os
dados do comado )ps+ por e$emplo ?para veri*icar se determiado programa esta rodadoA4 o
.esite em usar o -( e o -=
Ptes de *a(ermos o osso primeiro script vamos )7utar as peas+B vimos os comados
;sicos4 o coceito de variveis4 os operadores de comparao e por Sltimo o comado i*= 6e
7utarmos isto mais as pe:ueas dicas a seguir seremos capa(es de *a(er o primeiro script=
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 6osso prieiro script
1alor da ,ari,el a se*uir
86[PCOOV+operado+
8ste pe:ueo i* compara a varivel 86[PCO com a palavra
desligado4 se a codio *or verdadeiras ele mata o pla\er vlc4
seno ele )dorme+ 11 segudos e sai ?e$itA=
6e a varivel 2OD[P estiver va(ia ele mostra o
te$to a telaB Varivel sem valor
8la rece;edo algum valor ele mostraB
P varivel o esta va(ia
2oderamos dar o )pulo do gato+ e colocar este script
com apeas um i* X se a varivel o tem valor4 mostre
a telaB )varivel sem valor+ seno mostreB )P varivel
o esta va(ia+
Vamos *a(er osso primeiro script@e$erccio4 temos ele proto o captulo de resoluo de
e$erccios4 mas 9 claro :ue voc< vai resolv<-lo ates de co*erir4 o precisa *icar igual4 ;asta
*ucioar=
Onde escre,er os scripts
&ma *uo iteressate em algus editores de te$to o Liu$4 9 :ue eles *acilitam a
visuali(ao e escrita de scripts4 colorido os comados e suas estruturas4 recomedo o gedit ou
pluma= 2ara :ue esta *uo se7a ativada 9 ecessrio colocar o comeo do script Ia@;i@;as. ou
Ia@;i@s. etc4 e salvar4 esta li.a especi*ica o iterpretador de comados4 caso o te.a o s.ell
e$ecuta :ual:uer um= ?caso o *i:ue colorido ;asta modi*icar a opo :ue *ica o rodap9 mudado
de )te$to sem *ormatao+ para )s.+ A
Passos a passo de coo 2azer o script: antes do e"erccio#
- P;ra o editor de te$to escol.ido
- 8screva a primeira li.a Ia@;i@;as.
- Pgora vamos salvar para :ue as li.as *i:uem coloridas
- [em pessoas :ue colocam a e$teso =s. o ome do ar:uivo ?tato *a(A
- 2ara o termos pro;lemas *uturos4 7 vamos dar permisso de e$ecuo ?c.mod L$ scriptA
- Pgora 7 podemos escrever o script
- ]uado o script estiver proto etre o diretrio em :uesto e d< o comado =@omeHdoHscript
para e$ecut-lo
Ae4retes#
- 2reste muita ateo os espaos4 por:ue se der espao a mais ou a meos o vai rodar=
- Lem;re-se de sempre *ec.ar o i* X )*i+
- Os comados sempre so e$ecutados de cima para ;ai$o se:uecialmete4 ou se7a4 s e$ecuta a
pr$ima li.a :uado termiar a atual4 a o ser :ue usemos o )F+
- ]uado .ouver erros4 o termial mostra em :ual li.a o mesmo est4 em sempre 9 a:uela li.a
- Voc< pode saltar :uatas li.as :uiser
$"erccio 1 Prieiro Script
"uo do script X [emos 3 m9dicos4 cada um atede um turo di*erete4 o usurio
i*orma :ual turo dese7a se cosultar e o programa mostra o ome do m9dico do turo escol.ido4
s issoa
$tapas do script#
1- Nostra um te$to de ;oas vidas ao usurio
2- 2ede :ue o usurio escol.a :ual turo :ue dese7a se cosultar
3- Nostra o te$to estes moldesB N9dico [PL 9 o Sico a ateder o turo [PL
4- )Corme+ por 2 segudos
#- !*orma :ue a cosulta est marcada
%- O programa )dorme+ por mais 4 segudos e sai
'esoluo
Captulo B Operadores A%*icos de Cone"o
Com estes operadores podemos coectar duas ou mais codi0es criadas com os operadores
de comparao4 criado assim mais de um eveto a ser testado pelo s.ell4 a;ai$o aprederemos
so;re os coectores $ e O&=
1aos ,isualizar coo 2ica os conectores para 2icar ais claro#
J >o e$emplo acima temos dois coectores4 mas 9 s e$emplo4 7 :ue o correto ali seria apeas um
coector=
Operador l%*ico +$-
P:ui a con/uno 9 verdadeira se todas as codi0es de comparao *orem verdadeiras4
eto mostro a ta;ela para etedermos a lgica=
6C Condio 1 Conector Condio 0 'esultado do teste $"plicao
1G V e V Verdadeiro 2or:ue as duas codi0es so verdadeiras
2G " e V "also K *also por:ue apeas uma codio atede
3G V e " "also K *also por:ue apeas uma codio atede
4G " e " "also >e.uma codio atede
$"epli2icando#
Vamos cosiderar esta lgica como se *osse um porteiro e ele li;era o acesso de acordo com
a situao descrita a;ai$oB
6 etra a *esta casais :ue o .omem se c.ama C9sar $ a mul.er UuliaaB
1G C9sar e Uuliaa 8trada permitida ?as duas codi0es so verdadeirasA
2G 2aulo e Uuliaa O ome Uuliaa ;ate mas o ome 2aulo o atede4 ;arrados a
3G C9sar e Ncica O ome C9sar est a lista mas o ome Ncica o4 ;arrados a
4G USlio e Carolia >e.um dos dois omes esto a lista4 ;arrados a
8teda con/uno sedo a uio das codi0es
comparativas *eitas pelos coectores=
rasgado o ver;oB K tudo :ue esta detro dos
colc.etes do i* ^ _
Nuitas ve(es vamos es;arrar com a ecessidade de usar os coectores4 vamos supor :ue eu
preciso de um i* rodado apeas em duas situa0esB
8u *i( um script :ue dimiua a velocidade dos meus doMloads para 111Q :uado a mi.a
irm coectava o ote;ooQ4 mas :uado o pc da mi.a me estava ligado simultaeamete4 como
eu poderia dimiuir a velocidade para #1Q compesado duas m:uias ligadasY 8to eu criei um
i* para esta situao=
8sta 9 a parte :ue ideti*ica as duas m:uias ligadasB
i* ^ )V>O[8+ O )ligado+ $ )V2CNP8+ O )ligado+ _`t.e
Comado ?Moders.aper et.1 411 :ue 9 igual a X #1Q A
*i
8u usei vrios comados para c.egar o valor ligado ates de ser comparado e para outras
velocidades4 mas a:ui vamos os preder apeas ao setido do comado=
Operador l%*ico +O&-
P:ui a co7uo 9 verdadeira se uma ou outra codio *or verdadeira ?sedo as duas
verdadeiras tam;9m 9 vlidoAB
6C Condio 1 Conector Condio 0 'esultado do teste $"plicao
1G V ou V Verdadeiro 2or:ue pelo meos uma codio 9 verdadeira
2G " ou V Verdadeiro [emos uma codio verdadeira4 e 9 su*iciete
3G V ou " Verdadeiro [emos uma codio verdadeira4 e 9 su*iciete
4G " ou " "also >e.uma codio verdadeira para validarmos
$"epli2icando#
Vamos usar o mesmo e$emplo da coe$o aterior4 s :ue desta ve( eu preciso :ue apeas
uma codio se7a verdadeira para :ue ele e$ecute o comado4 trocaremos o e pelo ou=
6 etra a *esta casais :ue o .omem se c.ama C9sar O& a mul.er UuliaaB
1G C9sar ou Uuliaa 8trada permitida4 as duas codi0es so verdadeiras
2G 2aulo ou Uuliaa 8trada permitida4 pelo meos uma codio verdadeira ?7uliaaA
3G C9sar ou Ncica 8trada permitida4 a codio ?C9sarA valida a etrada
4G USlio ou Carolia >e.um dos dois omes esto a lista4 ;arrados a
2egado o e$emplo aterior do script :ue dimiui a velocidade da iteret4 podemos pesar
a seguite situaoB 8 se eu :uisesse dimiuir a velocidade da iteret para 111Q
idepedetemete da :uatidade de pcs ligados4 ou se7a4 se o pc da mi.a irm O& o pc da mi.a
me estiverem ligados4 ou se os dois simultaeamete dimiui para 111Q e proto=
i* ^ )V>O[8+ O )ligado+ O& )V2CNP8+ O )ligado+ _`t.e
Comado ?Moders.aper et.1 ,11 :ue 9 igual a X 111QA
*i
2ara o coector $4 ;asta lem;rarB
se 9 tudo verdadeiro eto e$ecuta=
>a liguagem do s.ell o operador )e+ 9 represetado como )5a+
e o operador )ou+ 9 represetado por )5o+ ?o co*udir com -(eroA
Como mostrado a;ai$oB
1d codio 2d codio
Coectado as duas codi0es
Co e$emplo acima podemos etederB 6e a varivel 2O-8D 9 di*erete de desligado $ a
Varivel 2P!>8L 9 igual a *ucioado eto *aa o comado=
Captulo D &sando os Conectores
Vamos a;ordar mais algus e$emplos dos coectores e partiremos para a prtica a seguir=
Podeos usar quantos conectores quiseros#
$"eplo de u script copleto: que usa o recurso dos conectores#
>ote :ue os comados i* o esto usado aspas as variveis e em os valores4 7ustamete
por se tratarem de valores um9ricos@matemticos=
>este script *ui o;rigado a usar o coector -a para de*iir o .orrio da tarde4 7 :ue )estar de
tarde+ sigi*ica ser mais :ue 13 .oras $ meos :ue 1, .oras=
&sado o coector
6e pelo meos uma
*or verdadeira ele
e$ecuta o comado
6 todas as codi0es
sedo verdadeiras 9 :ue
ele e$ecuta
$"erccio 0 5 $scre,endo scripts ais ela4orados
P *uo do script 9 i*ormar a classe do carro co*orme pedido pelo usurio
"errari e Lam;org.ii Celta 2alio e &o
Classe P Classe B Classe C
$tapas do script#
- !*ormar os carros dispoveis ao usurio
- 2ede ao usurio :ue digite :ual carro dese7a ver a classe
- Nostra a classe do carro e sai
Conse*uindo 2azer o script acia tereos atin*ido os nossos o4/eti,os at aqui: a*ora
2areos u script que e"i*e u pouco ais de raciocnio: se ,oc3 no conse*uir 2azer no se
preocupe: pode continuar co os pr%"ios captulos que o raciocnio l%*ico ais apurado
,e co o tepo)
$"erccio 7 A%*ica dos PC1 e PC0
>s temos 2 pcs4 vamos pergutar ao usurio :uais pcs esto ligados ?um de cada ve(A4
depois do usurio ter digitado )ligado+ ou )desligado+ para cada pc4 o programa mostra a soma a
tela ?o 9 soma *eita o s.ell4 leia o :uadro a;ai$o para sa;erA=
Co*orme os valores a;ai$o vamos mostrar a tela o valor total re*erete a soma dos
computadores ligados= 6upodo :ue o 2C1 e 2C2 este7am ligados4 eto o valor mostrado 9 1#4 se
*or apeas o 2C2 o valor por sua ve( ser 11 e assim sucessivamete4 o desa*io ser estruturar os i*s
para :ue o apaream i*orma0es demais ou de meos=
2C1 #
2C2 11
[emos os icremetos a;ai$o :ue poderemos adicioar ao e$erccio opcioalmete
o*erecedo a voc< mais algumas atividades para aguar o raciocio em 6.ell 6cript4 *aa um
;acQup do script *eito acima e adicioe as *u0es pedidas a;ai$o=
>ncreentos#
6e digitar ligado ou desligado errado4 avisar o usurio e sair
6e o usurio digitar desligado para os dois4 retorar o valor de (ero
'esoluo
Ateno4 o usaremos a *uo matemtica de somar4 por:ue em
apredemos ela aida4 voc< vai *a(er a soma de ca;ea e colocar o
resultado com o comado ec.o= O o;7etivo a:ui 9 raciociar e *a(edo
pela matemtica iria *icar muito simples e o 9 osso o;7etivo este
e$erccio
P:ui o vale opo umerica
o usurio deve digitar o ome
do carro4 para alcaarmos
o o;7etivo do e$ercicio
Captulo E .azendo loops co o F2orG e script reoto
U parou para pesar como podemos dei$ar um script idepedete4 :ue *i:ue ali de
protido vigiado as situa0es e e$ecutado comados de acordo com o :ue acotece4 sem
precisar de e.um gatil.o .umao4 o tempo :ue *or4 como se *osse uma setiela=
!sto 9 possvel com o )*or+4 ele 9 um dos comados :ue possi;ilita a isero de loops em
scripts4 a sua traduo 9 )para+4 ou se7a4 para determiada codio *aa o comado e:uato ela
*or verdeira=
Haior e enor
Po usar o comado )2orG temos :ue sa;er o setido destes dois comparadores ? )E+ )e+ A4
eu uso a seguite regra para o co*udi-losB
Pense e duas 4arras 8u :uero di(er para o s.ell :ue
A enor que B eto eu
dimiuo o lado da ;arra em :ue
est o P=
"icado assimB
Pgora eu :uero di(er :ue B
enor que A ?ou P 9 maior :ue
BA= 8to 9 s iverter a lgica=
"icado assimB 8u posso trocar o B de lugar
com o PY "icaria a mesma
coisaa
O comado :ue apresetarei
o podemos iverter os lados=
Lado :ue *oi *ec.ado
ou se7a do meor
$ntendendo o coando e criando loops liitados
Sinta"e
Continuando co a sinta"e
A traduo do coando F2orG#
Para a varivel loop :ue vale (ero
Dode os comados e:uato ela *or meor :ue 3
8 a cada rodada acrescete L 1=
Acontece isto#
8le veri*ica a codio e roda uma ve(4 Vloop passar a valer 14 ele veri*ica se loop estiver
meor :ue 3 ele roda ovamete4 depois ele veri*ica e v< :ue loop vale 2 e :ue a codio aida 9
verdeira e roda ovamete4 agora loop vale 3 e o 9 meor do :ue 34 eto ele dei$a de e$ecutar o
)*or+ e cotiua o script4 7 :ue a codio passou a ser *alsa=
Cimiui ou aumeta o valor
da varivel a cada rodada
varivelLL ou varivel--
Os cdigos :ue *icaro rodado o loop *icam a:ui detro
P:ui *ec.amos o )*or+ com o )doe+
P;re a
Codio
P:ui estou usado uma varivel c.amada )loop+
2ode ser o ome de varivel :ue voc< :uiser=
Ps 3 partes :ue sero e$plicadas a seguir4 sempre
sero separadas por poto e vrgula sem espao=
Cado um valor
para a varivel loop
P:ui 9 a c.ave do egcio4 ele d uma codio e:uato
ela *or verdadeira o loop vai rodado4 este caso
e:uato varivel loop *or meor :ue 3 ele vai e$ecutado=
Os par<teses estaro sepre desta *orma
Ateno
8ste loop rodar 3 ve(es4 estes valores
da varivel loop X X X 14 1 e 2
"ec.a a
Codio
Como ec.emos o comado de placas4 colo:uei o
cdigo ao lado sem e.uma poluio= X X X
Criando loops in2initos
[ra(edo a lgica :ue vimos acima4 para criarmos loops i*iitos4 ;asta *a(er uma codio
:ue 7amais dei$ar de ser verdadeira= 8$emploB
Co*orme mostrado acima4 voc< deve cocordar comigo :ueB
- Loop tem o valor de 2
- 2ara rodar o )*or+ loop deve ser maior :ue 1 ?e a codio 7 9 verdadeiraA
- 8 o valor de loop uca vai dimiuir4 sempre vai aumetar LL
Ou se7a4 o loop uca ser meor :ue 1 para :ue a codio se7a *alsa4 eto ele rodar
)para sempre+=
[e.o mais duas *ormas de escrever o )*or+ :ue *ucioa um pouco di*erete do :ue
e$pli:uei ateriormete4 como eu uca usei a prtica vou apeas apresetar=
P:ui ele rodar 4 ve(es4 uma para cada
par3metro4 sedo :ue cada ve( :ue ele rodar4 a
varivel )cor+ ter o valor de um par3metro4 :ue
soB a(ul4 vermel.o ===
&samos o mesmo coceito este )*or+4 a di*erea 9 :ue o usurio digita os
par3metros ?:uatos :uiserA= 8le digita o comado do script4 espao4 depois os
par3metros= =@script par3metro1 par3metro2 par3metro3 ===
P codio deve ser verdadeira ao passar pelo )*or+ a primeira ve(4 caso se7a *alsa passar direto
e o voltar para e$ecut-lo4 eto preste ateo a .ora de motar a lgica= 6alvo em mometos
:ue voc< colocar um loop detro de outro loop e o primeiro rodar at9 criar codi0es de cair o
segudo=
K iteressate voc< colocar o comadoB
ec.o Vloop ?detro do )*or+A para ir
vedo a tela :uatos loops dar
Veremos o coceito de par3metros *uturamete4 ele tem utilidade
o script como um todo e o somete o )*or+=
6e criarmos um loop com comados rpidos4 o script dar mil.ares de voltas em poucos segudos4
9 recomedado colocar um sleep detro do )*or+ limitado assim o tempo das rodadas=
!magie :ue voc< est saido de casa *altado 21 miutos para termiar a:uele doMload e
voc< precisa *icar presete estes 21 miutos para depois a;rir outro programa de doMload4 torret
por e$emplo 7 :ue ele atrapal.aria o doMload atual4 depois disto seria ecessrio desligar o pc
aps 2 .oras4 coverter a:uele vdeo pesado ou dar um comado demorado etc= Nas como *a(er isto
sem estar preseteY
Se/a 4e5,indo ao nosso e"erccio = script reoto
O script remoto *icar ao seu dispor para e$ecutar :ual:uer comado4 usaremos o Crop;o$4
assim pelo celular ou :ual:uer dispositivo com iteret voc< poder comadar o script4 mas *i:ue f
votade de o usar o Crop;o$ e colocar os ar:uivos em :ual:uer diretrio do pc4 7 :ue a ossa
iteo 9 o apredi(ado e testar osso script=
.uncionaento
- O script rodar 1 ve( a cada miuto
- P cada rodada ele l< o ar:uivo-te$to
- >o ar:uivo-te$to escreveremos o comado dese7ado
- 8le e$ecuta o comado digitado e limpa o ar:uivo-te$to
A,isos
- Were ou crie o ar:uivo )comado+ usado o X ec.o bb E VgON8@comado ?*ora do loopA
- Voc< dever usar um certo recurso para o script o *icar agarrado o comado ?cap= 1A
- &se X ec.o Vloop detro do )*or+4 seo vai parecer :ue deu pau
- >a costruo do script dimiua o tempo de loop para *a(er os testes
http#IIJJJ)edia2ire)coIdoJnloadIEcethBuKcc=cB,qI,ideoLe"ercicioL=)o*,
>ncreento
- 6e escrever X vivoY - ele respode X )sim vivo4 esperado o comado+4 a reposta estar um
ar:uivo de leitura ?avisosA=
'esoluo
6e o script *or desligar o computador ou :ual:uer outro comado :ue e$i7a privil9gios4 rode
ele como root4 caso cotrrio e$ecute como usurio ormal :ue 9 ;em mel.or 7 :ue a;rido
um programa como root as co*igura0es estaro di*eretes do ormal=
2ara o script apotar corretamete a .ome
de :ual:uer usurio :ue o e$ecute4 ;asta
usar uma das duas op0es a;ai$oB
VgON8 ou @.ome@V&68D
8$emploB ec.o )teste+ E VgON8@ar:uivo
se tras*ormar emB IhoeIluiz por e$emplo
Plguma duvida de como o script *ucioa Y
Ve7a o vdeo com ele rodado4 o liQ a;ai$o
Captulo M Nhile e &ntil
Cigamos :ue os dois comados descritos a:ui tem um pouco do )i*+ e um pouco do )*or+4
um pouco do )*or+ por:ue eles tam;9m tem como caracterstica rodar em loop e um pouco do )i*+
por:ue tem a mesma estrutura e ecessitam de uma codio para rodar=
Nhile
-.ile em igl<s sigi*ica )e:uato+4 ou se7a4 e:uato a codio *or verdadeira *aa o
comado4 o )i*+ se a codio 9 verdadeira ele roda uma ve(4 a:ui ele vai rodado enquanto ela
*or verdadeira ?*ica )agarrado+ detro dela at9 mudar para *alsaA=
2odemos usar um valor um9rico para determiar :uatos loops teremos4 podemos dar
opo do usurio digitar se :uer tetar ovamete etc= O importate 9 usar uma varivel para
)pescar+ o M.ile ou util=
Sinta"e
M.ile ^ Codio _`do
comado
doe
O loop do Jhile pode usar para rodar#
6Oeros
&sado o mesmo coceito do )*or+ podemos ver :ue o script a;ai$o dar cico voltasB 14 14
24 3 e 4= 8u o esiei a lidar com matemtica4 mas ;asta seguir o coceito a;ai$o4 o colo:ue
aspas a soma e respeite os espaos visveis ?a mesma coisa vale para a codio comparativaA=
$ste script diz#
- Volta 9 igual a (ero
- 8:uato VVOL[P *or meor :ue # *aa o comado
- Pdicioe L1 a varivel VOL[P
Nesmo sedo um valor um9rico
s damos este valor usado aspas
CodioB $nquanto VOL[P *or meor :ue # *aa o comado
Comado detro do loop
P:ui eu somo L1 para cotar mais um loop dadoB varivel VVOL[P 9
igual ao valor de VVOL[P L1
"ec.ado o M.ile
Ca mesma *orma :ue o i*4 o M.ile e util usaremos os
operadores lgicos de comparao esiados o cap= 3
[ato o M.ile :uato o util o valor da varivel :ue ele usar como re*er<cia para rodar
deve estar de*iido ates de c.egar o comado em :uesto=
&m e$emplo prtico *oi o :ue usei o proteccotiuo4 eu pergutava ao usurio :uatos
pla\ers ele dese7ava adicioar o programa e :uado o script *osse criar os pla\ers ele pegava a
varivel :ue usei com o usurio4 eto se o usurio respodeu 3 o M.ile dava 3 loops4 repetido o
comado detro do M.ile 3 ve(es e cose:uetemete criado o proteccotiuo para 3 pla\ers=
(e"to
2odermos pegar te$tos para dar voltas o M.ile usado a sada de um comado por
e$emplo4 eu *ao um programa de veri*icao e enquanto a sada deste comado *or determiada
palavra o M.ile vai rodado at9 :ue ela mude e saia do loop= Ps varia0es so i*iitas4 mais para
*rete aprederemos a *iltrar te$tos@sadas de uma *orma :ue possamos resumi-los a uma li.a4 uma
palavra etc=
P seguir usaremos um loop :ue dar voltas e voltas at9 :ue o usurio decida passar adiate=
&ntil
&til sigi*ica at9 X at9 :ue determiada codio se7a verdadeira e$ecute4 ou se7a4 ele
e$ecuta se a codio *or *alsa e s termia :uado ela *or verdadeira= 8to eu posso usar uma
varivel de valor # e at :ue ela se tore 11 vai rodado e detro do util usaremos a mesma sita$e
de soma :ue usamos o M.ile= O dado :ue determia o loop tam;9m pode ser te$to4 mas o ac.o
iteressate4 o importate us-lo :uado ac.ar ecessrio e$ecutar o )atG=
Sinta"e
util ^ Codio _`do
comado
doe
8le 9 id<tico ao M.ile4 tedo apeas a sua l%*ica in,ertida: tudo :ue a;ordamos com o
M.ile ateriormete vale para o util4 eto o e$plicarei ovamete4 vou dar um e$emploB
K importatssimo eteder :ue o )movimeto+ para tirar o M.ile ou util
do loop deve estar detro dele4 seo rodar )para sempre+=
Zaratido :ue etrar o loop4 poderamos pergutar isto ao usurio tam;9m
O script poder *a(er algo :ue s o usurio pode decidir :uado prosseguir4
eto ele respode cotiuar e o M.ile automaticamete sair do loop=
Pt9 :ue VVOL[P se7a maior :ue # eto *aa o
comado= 8le vai rodado at9 :ue a codio
se tore verdadeira4 ou se7a4 at VVOL[P ser
maior :ue #=
Ps suas voltas seroB 14 14 24 34 4 e #
2odemos ter mais de uma codio tato o M.ile :uato o util
usado os coectores )8+ e )O&+ apresetados o cap= #
$"erccio B Pedindo senha ao usurio
O que o script 2az#
- C ;oas vidas
- 2ede se.a ao usurio
- P se.a sedo correta ele e$ecuta o comado X ec.o )se.a correta+ e sai
- Caso cotrrio o usurio teta ovamete sem sair do script ?loopA
- 6o at9 # tetativas e depois das # o script mostra )tetativas esgotadas+ e sai
8ste script ter utilidade :uado apredermos so;re *u0es4 7 :ue ela 9 um atal.o :ue os
7oga para determiada parte do script4 eto supodo :ue *aamos um programa de cdigo *ec.ado4
o usurio s coseguiria e$ecutar determiada parte do script se digitasse a se.a corretamete e o
atal.o estaria detro do M.ile ou util=
'esoluo
O desa*io a:ui 9 a lgica e sa;er :uais comados colocar detro do loop=
P se.a pode ser 123
Captulo P OperaQes ateticas e inicializao de scripts
U vimos um pouco de matemtica :uado somamos o valor da varivel L1 para cotarmos o
loopB
]uado o script precisar literalmete *a(er cotas igual uma calculadora4 usamos a sita$e
a;ai$o4 dei$ado a cota sempre etre os dois par<teses e associado o resultado a uma varivel4
este comado o *a( di*erea escrever com ou sem espao=
Pcima a varivel CO>[P 9 igual ao resultado da operao etre par<teses e o ec.o eu
mostro o resultado=
&ma ve( usei este coceito para redud3cia4 se o comado retorasse %4 eu e$ecutaria o
comado 24 s :ue apeas uma veri*icao poderia ter *al.as4 eto colo:uei tr<s veri*ica0es somei
todas elas usado suas variveis e a lgica de comparao eu di(ia :ue poderia e$ecutar o
comado se o valor *osse igual ou maior :ue %44 ou se7a4 se at9 duas veri*ica0es *al.assem eu
coseguiria o valor %4 o :ue idicava :ue pelo meos uma estava *ucioado= P;ai$o uma
aplicao das opera0es matemticas usado variveis=
K di*cil dar e$emplos prticos4 eu usei pou:ussimas ve(es cotas em script4 a o ser :ue o
seu programa se7a mais voltado para matemtica=
Cevemos salietar :ue se o valor *or cosiderado matemtico devemos ter cuidado com as
aspas o i*4 M.ile etc=
P:ui *a(emos o comado cosiderado a
codio como um valor matemtico
8 a:ui como um te$to4 colocado aspas a
varivel e item a ser comparado
2odemos ter outras varia0es :ue podem dar certo4 voc< sa;edo estas 24 vamos complicar pra :u<Y
Ou usado o sial de meos ?es:uece multiplicao e diviso esta sita$eA
Os sm;olos matemticos usados o s.ell
so os :ue estamos acostumados
R
5
S
I
!*eli(mete o s.ell s mostra resultados iteiros
se a resposta *or *racioria ele mostra como
iteiro ou as ve(es o *ucioa=
>nicializando scripts co o sistea e pro*raando5os
Ca:ui para ;ai$o o se preocupe em decorar ada4 use para cosultas *uturas=
>nicializao
'c0)d
Com o diretrio rc2=d o script ser uma das Sltimas coisas a serem e$ecutadas como root4
;asta seguir o passo a passo a;ai$oB
colo:ue o script em X @etc@iit=d
colo:ue seu atal.o em X @etc@rc2=d@
Ptal.os comeado com ome 6// so os Sltimos e$ecutados4 podedo *icar assimB
@etc@rc2=d@6//meusHcript
'c)local
Basta colocar o edereo do script o ar:uivo-te$to X etc@rc=local
8$emploB
@etc@meuHscript
!iciali(ado com usurio especi*icoB
sudo -u usurio @etc@script
(a4 podeos pro*raar o script para e"ecutar e deterinados dias e horrios)
Cron
@etc@crota;
service cro restart
8ditamos o ar:uivo @etc@crota; levado em cosiderao os campos a;ai$o=
Capo .uno Preenchiento
1G Niuto 1-#/
2G gora 1-23
3G Cia do N<s 1-31
4G N<s 1-12
#G Cia da 6emaa 1 Comigo4 1 6eguda ===
%G usurio root lui( etc=
'G 2rograma para e$ecuo Comado
JO %G campo pode ser omitido4 mais evite *a(er isto4 por:ue costuma dar pau
"icado assim X 21 11 2 12 2 lui( @.ome@lui(@meuHscript
'e2er3ncia do Cron# .ttpB@@MMM=.ardMare=com=;r@dicas@cro=.tml
6e voc< :uiser tra;al.ar mel.or a ordem de e$ecuo4 9 s dar
um )ls @etc@rc2=d+ e veri*icar os scripts :ue costam l=
6empre dei$e a ultima li.a
do crota; va(ia
Pl9m das op0es a;ai$o voc< tam;9m pode colocar o script os Pplicativos de 6esso
Co comado gerado acima podemos eteder X aos 21 miutos das 11 .oras do dia 2 de de(em;ro
uma tera *eira o usurio lui( e$ecutar o )meuHscript+ :ue est em @.ome@lui(
Captulo 19 Coando Case
K muito mais *cil criarmos meus com um comado prprio4 a programao s temos o
)case+ :ue *acilita em muito a costruo destas estruturas4 com ele podemos col.er dados de uma
varivel :ue idicar :ual opo o case deve e$ecutar=
$strutura do case
6upodo :ue criamos um meu com 3 op0es para o usurio escol.er uma4 o case e$ecuta o
comado de acordo com o valor rece;ido pela varivel=
$"eplo na prtica
Caso o valor da varivel este7a e X 14 2 ou 3 *aa os comados
correspodete a seu valor
O Smero ou palavra da opo *ica ates dos par<teses e do lado ou a;ai$o *icam
os comados a serem e$ecutados ?1 em cada li.aA=
Cepois de adicioar todas as li.as da:uela opo devemos colocar o *ial do
ultimo comado poto e virgula duas ve(es para *ec.-la=
P:ui *ec.amos o case escrevedo ele ao cotrario
Nostrado o meu para o usurio
Col.edo o valor da varivel e a;rido o case
P:ui eu colo:uei a opo )J+4 ou se7a4 se o usurio digitar algo :ue
o costa as op0es ele cai a:ui
Depare :ue a opo 4 temos dois comados4 o poto e virgula s
costa o ultimo comado
>o e$istem limites a :uatidade de li.as :ue colocaremos as op0es4 eu 7 c.eguei a
colocar verdadeiros scripts detro de cada uma=
K isto4 o temos muito o :ue *alar do case4 com ele ;asta criarmos codi0es para :ue a
varivel rece;a algum valor ates de e$ecut-lo e sempre repetir sua sita$eB
- P;ertura do comado X case varivelHusada i
- Op0es :ue *icam ates dos par<teses X SmeroHouHte$toA
- [ermiado os comados da opo4 colocar poto e vrgula 2 ve(es o *ial do Sltimo comado
- "ec.-lo escrevedo case ao cotrrio X esac
$"erccio D Pequeno desa2io de l%*ica
P varivel rece;e um Smero digitado pelo usurio
6o 3 rodadas o total e em cada uma delas o script multiplica o Smero dado pelo usurio
com o Smero idicado a;ai$oB
1G rodada X 11
2G rodada X 21
3G rodada X 31
8to se o usurio digitou 34 sero 3$11 3$21 e 3$31 mostrado a tela um resultado a cada
loop4 o desa*io a:ui 9 *a(er uma multiplicao di*erete a cada rodada 7 :ue o podemos prever o
Smero :ue ser digitado pelo usurio=
$"eplo de coo de,e aparecer na tela#
8$istem vrias *ormas de se *a(er este pe:ueo script4 a:ui usaremos o Jhile e case para
alcaarmos os ossos o;7etivos= 6e voc< tiver di*iculdades sai;a :ue usaremos /1 h do tempo para
pesar e 11 h para escrever o script=
'esoluo
2odemos precisar mostrar a tela te$tos usado o ec.o :ue cote.am acetos ou sm;olos4 este
caso 9 o;rigatrio coloc-los etre aspas4 seo 9 erro atrs de erro4 eu sempre coloco etre aspas
assim 9 meos uma coisa para se preocupar ?as variveis :ue *icaro detro de aspas *a(em a sua
*uo de mostrar seu coteSdo ormalmeteA
Captulo 11 .uno e ParTetro
.uno
O papel da *uo 9 segmetar vrios cdigos o scripts torado-os acessveis a :ual:uer
mometo e em :ual:uer parte4 usar a *uo 9 como colocar vrios scripts um s script= &m
e$emplo prtico disto 9 o protec ode eu ti.a muitas op0es a serem e$ecutadas de vrias partes do
script ?o case o resolveriaA=
>o dese.o ao lado
podemos reparar :ue temos 3
*u0es e elas so acessadas
detro dos cdigos de a7uda e
teste=
>o seria vivel *a(<-lo
com o case por:ue eu teria :ue
repetir os cdigos em vrias
partes do script e o :ue eram
:uase 1111 li.as se torariam
1#11 ou mais=
>a parte de a7uda em determiado mometo eu pergutarei ao usurio se ele dese7a istalar
o 2rotec4 2rotecCotiuo ou testar4 usado o valor da varivel vou comparar o i* ou case
e$ecutado assim a *uo :ue dese7amos= 8to o dese.o apresetado podemos visuali(ar com
as setas para ode o s.ell pode ir e da mesma *orma poderamos criar acessos de vrios potos para
vrios potos=
Sinta"e
P sita$e da *uo ser sempre a mesma4 como mostrado a;ai$o4 primeiro o ome dela ?o
meu e$emplo )istala+A depois dois par<teses sem espao detro e uma c.ave apotado para
es:uerda= >as li.as a;ai$o voc< coloca os cdigos a serem e$ecutados a *uo e :uado
termiar colo:ue outra c.ave apotado para direita *ec.ado a *uo=
2ara :uem o co.ece o protec ?o dei$a o protetor de tela *icar etrado os ossos vdeosA4 9
s ;ai$-lo o liQ X .ttpB@@MMM=media*ire=com@doMload@rrdrMl1ceic(,\/@protec=(ip
8teda :ue podemos *a(er uma )salada mista+ com os comados :ue vimos at9 a:ui4 M.ile detro
de M.ile4 i* detro de i* e detro deste i* um M.ile etc= >o *i:ue com receio de *a(er estes tipos de
cdigos por:ue muitas das ve(es 9 esta );agua+ :ue dei$a o osso script mais *cil de motar
Cepois de declarar a *uo ao s.ell vamos c.am-la4 para *a(er isto ;asta escrever o ome
da *uo a li.a dese7ada4 o e$emplo a;ai$o o usurio 7 istalou o 2rotec e se dese7ar istal-lo
para outro pla\er deve digitar a letra )i+4 assim cai o i* :ue tem uma li.a c.amado a *uo de
ome )istala+ o :ue *a( ele )pular+ de ode est ido para outra parte do script=

ParTetros
Os par3metros so valores arma(eados em variveis pr9-determiadas4 estes valores so
*orecidos :uado o usurio digita o comado :ue c.ama o programa@script pelo termial4 depois
de digitar o )c.amador+ damos espao e digitamos o primeiro par3metro e assim sucessivamete
co*orme mostrado a;ai$o=
Ou a prtica X a;ai$o eu te.o o script );acQ+ :ue em seu cdigo d um cp ?copiarA o
primeiro par3metro e cola o segudo=
6em sa;er usamos os par3metros o termial4 o comado apt-get istall *ire*o$4 apt-get 9 o
comado do programa4 istall e *ire*o$ so os par3metros4 iteramete o apt compara o valor do
primeiro par3metro para sa;er se istala4 remove etc= 8 depois ele pega o segudo par3metro :ue
ser o o;7eto a ser tratado=
K claro :ue o apt 9 muito mais do :ue isso e temos comados gigatescos com vrios
par3metros :ue eu o *ao ideia da e$plicao4 por9m se voc< pegou a oo de par3metros 7 9 o
su*iciete=
P *uo deve ser mostrada ao s.ell ates de ser c.amada4 vamos supor4 eu te.o uma *uo
o meio do script e resolvo c.am-la o comeo4 o vai *ucioar por:ue o s.ell o leu aida4
eu sempre coloco as *u0es o comeo do script assim d meos tra;al.o
C.ama a *uo istala
6e o usurio o digitar os par3metros o script vai rodar4 o :ue pode acotecer 9 o mesmo dar pau
por *alta de dados
$ndereo co ,rios sites tutoriais de Shell Script
.ttpB@@aurelio=et@s.ell@
Sinta"e
>s temos os par3metros V1 V2 V3 V4 V# V% V' V, V/4 eto colocamos ele o script o
para rece;er valor4 mas 7 usado os valores :ue sero digitados o termial=
O script aterior demostra o *ucioameto dos par3metros4 se o usurio digitar o comado
do script e ao lado colocar X Liu$4 eto ser e$ecutado o comado ec.o mostrado a palavra
Liu$4 se ele digitar )Liu$ e livre+ sero 3 par3metros e o s.ell e$ecutar o ec.o at9 o terceiro
par3metros4 e assim sucessivamete=
Ps aplica0es so i*iitas4 eu poderia usar o valor de um par3metro para determiar a
:uatidade de loops4 para col.er um ome de usurio4 para rece;er valores a serem calculados etc=
O script a;ai$o por e$emplo4 dorme com o tempo determiado pelo usurio e depois mata o
programa tam;9m com a idicao do usurio=
O usurio daria um comado parecido com este X =@script 111 *ire*o$
[ratamos os par3metros como as variveis4 s tedo em mete :ue o seu valor
ser dado pelo usurio ates de iiciar o script
2ara mais de / par3metros usaremos a dica do La9rcio de 6ousa do ZL
2ara declarar mais de 11 par3metros o s.ell4 ;asta colocar sua e$paso etre c.avesB
Vi11j
Vi11j
Vi12j
8 assim sucessivamete
$"erccio E .uno e parTetro no eso script
- O usurio etra o programa utili(ado o seu ome como par3metro
- Pparecer a tela de ;oas vidas costado o ome deste usurio
- 8le *a( um cadastro ?poucos dados s para simular4 cp* 9 o;rigatrioA
- 8le 9 7ogado para a seguda parte ?de compraA4 esta parte 9 pedido o cp* ovamete e se o
mesmo estiver errado ?de acordo com o :ue *oi cadastradoA4 o script volta para cadastrar o cp*
ovamete
Bons estudos e procure entender a l%*ica de pro*raao ais do que decorar coandos
'esoluo
Captulo 10 Coandos sed: cut: pipeline: tr e *rep
Os comados apresetados a:ui dei$am o script mais )iteligete+ a7udado-o a )ler+4
escrever4 *iltrar4 colocar mais de um comado a mesma li.a etc=
O te"to a4ai"o ser usado de e"eplo nas pr%"ias 2erraentas ostradas aqui
Sed
O comado sed tem vrias *ucioalidades relacioadas a *iltragem4 como e$i;ir li.as com
determiada palavra4 e$trair um trec.o do te$to4 trocar li.as de lugar etc= Como o material do
mesmo 9 vasto vamos apreder apeas a *iltrar te$tos especi*icado por li.a4 o :ue os a7udar as
*iltrages=
Para ostraros soente deterinada linha daos o coando#
Nas isto o 9 o su*iciete4 devemos e$ecutar algum comado para :ue ele *iltre sua sada4
se7a o ls4 cat4 ps etc= P;ai$o eu usei o comado cat ?e$i;e o coteSdo de ar:uivos-te$toA o osso
te$to e$emplo e *iltrei com o sed=
Com o comado acima a sada o te$to de e$emplo seria estaB
L2 - porque hoje voc usa a tecnologia criada por algum no passado
Para FeliinarosG deterinada linha#
&samos a sita$e a;ai$o idicado a li.a a ser ocultada
6aido assim o osso te$to e$emploB
L2 - porque hoje voc usa a tecnologia criada por algum no passado
L - e amanh outros podero des!rutar da sua contri"ui#o iniciada hoje$
Ou posso elimiar mais de uma li.aB
Li.a 2
Pgora sim4 a sada do comado cat so 3 li.as4 o sed pega este resultado *a( a *iltragem e
mostra apeas a li.a 2= Veremos a ;arra ates do sed esta aula4 por e:uato ;asta
sa;er :ue *a( o sed processar o resultado do primeiro comado=
Como so 3 li.as poderamos usar o
comado de icluir e c.egaramos o
mesmo resultado4 mas 9 s e$emplo=
L% - &ontri"uir com o so!t'are livre contri"uir consigo mesmo,
L2 - porque hoje voc usa a tecnologia criada por algum no passado
L - e amanh outros podero des!rutar da sua contri"ui#o iniciada hoje$
Saindo assi#
L2 - porque hoje voc usa a tecnologia criada por algum no passado
Como somos usurios iiciates o s.ell apresetei apeas o ;sico e a sua cami.ada
voc< poder co.ecer os vrios recursos :ue este comado tem=
Caso :ueira se apro*udar o sed acesse o liQB
.ttpB@@t.o;ias=org@doc@sosed=.tml
Cut
Com o cut limitamos a sada dos comados em campos4 este te$to :ue escrevo podemos
cosiderar :ue seus campos so determiados pelo carcter )espao+4 eto se eu pedir ao cut :ue
me mostre o coteSdo do campo 3 ele me retorar a palavra )cut+4 por:ue as palavras so os
campos e os espaos mostram ao s.ell ode 9 a delimitao dos mesmos4 ada te impede de usar a
letra )a+ por e$emplo como delimitador4 sair um resultado muito louco4 com isto digo :ue 9 voc<
:uem determiar o :ue ser o delimitador e cose:uetemete os campos=
>o e$emplo aterior cosiderei o te$to o tedo e.um eter4 ou se7a se temos um
ar:uivo com vrias li.as :ue so e$i;idas separadamete4 o cut mostrar o campo k de cada li.a=
O te$to a;ai$o por e$emplo4 podemos usar o delimitador )dois potos+
8to usado o comado cut para mostrar o campo 24 seria e$i;ido istoB
Se quiseros ostrar soente a pala,ra FpretoG s% usar o cut e sed
cat te$to T )cut+ pedido o 2G campo T sed - l3pl mostrou a li.a 3
mouseBa(ulBovo
carroB;racoBusado
radioBpretoBovo
a(ul
;raco
preto
preto
O importate 9 sempre procurar padr0es :ue l.es sirvam de ;ase para c.egar o coteSdo
:ue alimete corretamete o script= >o comado ps podemos *iltr-lo de uma *orma :ue c.eguemos
somete o pid4 o pro;lema 9 :ue o pid passado de certa umerao ga.a mais um carcter
um9rico dimiuido um carcter espao4 ou se7a o seu comado :ue *ucioava per*eitamete4
simplesmete o vai servir mais ?tem maeiras de cotorar isto4 mas o a;ordarei a:uiA=
8to preste ateo em todas as varia0es possveis para evitar erros o script :ue em
sempre so *ceis de e$ergar=
Sinta"e
Coando 52 ais nOero do capo a ser
ostrado
Aqui ostro o carcter que deterina o
capo FespaoG)
mouseBa(ulBovo
carroB;racoBusado
radioBpretoBovo
a(ul
;raco
preto
Ca mesma *orma :ue o sed4 o cut tam;9m precisa de usar o resultado de outro comadoB

Desultado do comado acima dado o te$to e$emplo ?somete a primeira li.a e sem o L1AB
K isto :ue t.amos so;re o cut e uca es:uea :ue um dia voc< precisar de uma
i*ormao to especi*ica para o seu script e o cut L sed sero a soluo=
Pipeline
Nuitas ve(es precisamos pegar a sada do comado P para usarmos o comado B e c.egar
o resultado *ial com o comado C4 C etc= Pl9m disto podemos dimiuir o tama.o do script
7utado vrios comados a mesma li.a4 9 e$atamete isto :ue o pipelie *a(4 ele 9 represetado
pelo sm;olo )T+ :ue est ao lado da letra )(+ ;astado digit-lo com o s.i*t=
$"eplo siples#
>o e$emplo acima eu precisava (erar os ar:uivos-te$to resposveis pelo loop e o *a(ia
muito setido usar vrias li.as para isto4 eto colo:uei todos cocateados a mesma li.a
usado o pipelie= ?mais tarde eu desco;ri :ue o precisava usar ar:uivo-te$to para o loop rsrsA
$"eplo ais a,anado#
Pcima dou 3 pigs4 limito a sada para o campo 1 ?determiado por espaoA e o resultado
disto eu aida pego e mostro apeas a li.a 4 usado o sed=
2ara usar o pipelie ;asta ter criatividade4 se7a para c.egar um resultado :ue seria mais
di*cil de ecotrar sem o pipe ou apeas para compactar o script4 o importate 9 sempre testar4
por:ue em tudo :ue parece *ucioar vai *ucioar=
(r
Com este comado 9 possvel su;stituir caracteres de um te$to por outros4 9 claro :ue
podemos icluir como te$to um script ou um ar:uivo de co*igurao por e$emplo=
Sinta"e
Coando Pala,ra ou carcter a ser su4stitudo O que ,ai entrar no lu*ar
tr ^la4el_ ^l443l_
K importate o dei$ar espaos detro dos colc.etes para *ucioar
2ipelie
8$ecutado o comado a;ai$o em osso te$to e$emplo4 ele su;stituir a letra )a+ pelo
Smero )4+ e a letra )e+ pelo Smero 3=
.icando assi#
&ontri"uir com o so!t'(r livr contri"uir consigo msmo,
porqu hoj voc us( ( tcnologi( cri(d( por (lgum no p(ss(do
(m(nh outros podro ds!rut(r d( su( contri"ui#o inici(d( hoj$
&ma *uo muito Stil o comado tr 9 a de tras*ormar caracteres miSsculos em
maiSsculos e vice-versa4 assim se pedirmos ao usurio :ue digite algo e :ue este valor se7a
o;rigatrio em maiSsculo ou miSsculo podemos tras*ormar este valor com o tr garatido assim
o *ucioameto do script=
(rans2ora tudo e aiOscula (udo inOscula
cat te$to T tr a-( P-W cat te$to T tr P-W a-(
$liina o que te entre aspas do te"to +aqui eliina espaos-
cat te$to T tr -d b b
O cdigo a;ai$o 9 um e$emplo de como podemos pedir um valor ao usurio e tras*orm-lo
do 7eito :ue :uisermos4 a:ui passo tudo :ue esta maiSsculo para miSsculo= 6e o usurio digitar
)CP6P+ eto o valor da se.a passar a ser )casa+4 se ele digitar )CPsa+ eto teremos )casa+ e
assim por diate=
Urep
Com o comado grep tam;9m *iltramos sadas4 mas a:ui 9 por palavra e o por Smero de
li.a4 este comado mostra todas as li.as ode .a7a a icid<cia da palavra especi*icada4 ele 9
muito usado para *iltrar sadas e$tesas o termial=
Sinta"e
Coando a ser 2iltrado e
pipeline para concatenar
Coando *rep Pala,ra a ser 2iltrada
>o comado acima eu listo os diretrios e peo o grep para mostrar todos :ue te.am a palavra vlc=
Lem;rado :ue este *oi um resultado mostrado a tela e se precisarmos de uma ao de*iitiva
ecessitaremos direcioar a sada para um ar:uivo-te$to ?pode ser o mesmoA
1aos supor que ,ou dar o coando Fls 5laG no FIhoeG o resultado ser 4e *rande: as
eu dese/o localizar os diret%rios contendo o noe F*noeG: ento V
Se *rep Co *rep
8 muito mais resultado para ;ai$o
Nostrado apeas as li.as ode costam a
palavra gome
6e .ouver :ual:uer di*iculdade com este comado ;asta trei-lo o termial *iltrado as
sadas dos comados :ue voc< est acostumado usar=
$"erccio M &sando os coandos
&sado a sada do comado )ls -la+ o @.ome
.aa u coando que e"i4a#
6omete o m<s de ovem;ro4 apeas uma ve( e mais ada=
P resposta ser somete X >ov
2ode ser o m<s :ue dese7ar4 este o vai ter resposta por:ue de um 7eito ou de outro voc<
coseguir c.egar o resultado esperado=
Captulo 17 Wltios coandos
Contando as linhas co o NC
Pl9m de li.as o Mc cota ;\tes4 caracteres4 palavras etc= Vide maual ?ma McA4 ele pode
ser muito Stil 7 :ue em determiadas situa0es precisaremos sa;er o Smero de li.as totais para
rodar um loop por e$emplo=
Sinta"e
Coando que colhe os dados R pipeline Coando Jc contando as linhas
cat te$to T Mc -l
P:ui o cat mostraria todo o te$to como temos o Mc ele pega a sada cota :uatas li.as e
mostra somete a cotagem a tela= Nuito simples 7 :ue voc< co.ece o *ucioameto de
comados :ue usam a sada de outros comados=
(ie
2odemos croometrar o tempo de e$ecuo dos comados e$ecutados o s.ell4 para isto
;asta colocar o )time+ ates do comado assimB
>o mometo eu o *ao ideia de uma aplicao prtica deste comado :ue o se7a a
curiosidade4 mas uca se sa;e :uado criaremos um programa :ue ecessite col.er os dados do
tempo de e$ecuo de determiado comado=
Caso precise usar o te$to al9m de sua cotagem4 o recomedado 9 direcioar a sada do
cat para um ar:uivo-te$to )E+ e em outra li.a usar o comado Mc este ar:uivo=
Sort
Com o sort podemos ordear as sadas dos comados al*a;9tica e umericamete
6em e.uma opo ele classi*icar as sadas al*a;eticameteB
&sado a opo - temos a classi*icao um9ricaB

$liinando a sada dos coandos
Nuitas ve(es precisamos :ue o script e$ecute determiado comado e :ue o se7a
mostrado ada a tela para o usurio4 para isto direcioamos a sada para um );uraco egro+ o
Liu$=
Cirecioamos para o )E @dev@ull+
$"eplo#
Pcima dois comados de um script ode era mel.or o co*udir o usurio com a sada
dos comados=
.i*let
Com o *iglet podemos e$i;ir as *amosas escritas *eitas o termial4 Cado assim uma
icremetada o seu visualB
Sinta"e#
*iglet palavra
K provvel :ue o *iglet o ve.a istalado por padro4 por isto depededo do cote$to
voc< pode usar o pr$imo comado=
Nhich
Com este comado veri*icamos se determiado programa esta istalado4 como mostrado
a;ai$o o programa mpg123 o estava istalado por isto o valor retorado *oi va(io e:uato :ue o
*ire*o$ 7 estava e ele mostrou ode o e$ecutvel se ecotrava=
Sinta"e
M.ic. programa
P;ai$o eu criei uma varivel :ue rece;e o valor do comado M.ic.4 se ela estiver va(ia eu
perguto ao usurio se ele dese7a istalar o mpg123=
>d 5u +,eri2icando se root-
Plgumas ve(es o script roda da maeira esperada apeas como root ou como usurio
ormal4 para *a(er esta ideti*icao usamos o comado )id -u+4 :uado e$ecutado ele pode
retorar o valor )1+ ?(eroA o :ue sigi*ica :ue estamos logados com usurio detetor de privil9gios
root caso cotrrio idica :ue o mesmo o tem privil9gios=
P sita$e 9 simplesmete )id -u+4 a;ai$o temos as primeiras li.as do protec ode o mesmo
o pode ser e$ecutado como root seo temos uma s9rie de erros4 eto a primeira coisa :ue o
programa *a( 9 a veri*icao e caso o usurio se7a root 9 mostrado uma mesagem e e$it=
$"erccio P Con2i*urando o Sa4a
Vamos criar um script :ue automati(a a co*igurao do sam;a ?programa :ue compartil.a
ar:uivos etre liu$-MidoMs liu$-liu$A4 *acilitado assim a vida do usurio=
Ainhas do Sa4a
Com as li.as a;ai$o gravadas o @etc@sam;a@sm;=co* 7 so su*icietes para compartil.ar
ar:uivos a rede=
^glo;al_
MorQgroup O admi I >ome da rede
ame resolve order O lm.osts Mis ;cast .ost I 8vita erros de mapeameto
^ar:uivos_ I >ome :ue ser e$i;ido para o diretrio em :uesto
pat. O @.ome@lui( I 2asta compartil.ada
read ol\ O o I C permisso de escrita ?o 9 de*aultA
pu;lic O \es I 2ermisso para covidados ?9 ecessrio :ue o usurio este7a adicioado o sam;aA
Pcima os ites em a(ul sero dados pelos usurios ?atrav9s de variveisA e o restate sero *i$os
Caractersticas do pro*raa
- !stala o sam;a se ecessrio
- 8$plica :ue o programa cria um compartil.ameto pu;lico=
- Neu X 1- >ova co*igurao 2- Pdicioar ovo diretrio 3- Pdicioar ovo usurio
- 2erguta ao usurio X ome da rede4 diretrio a ser compartil.ado e o ome :ue aparecer
- Deomeia o sm;=co* atual criado um ;acQup
- 8screve o ovo sm;=co* usado as i*orma0es dadas pelo usurio
- 2erguta e adicioa usurios de outras m:uias +Xadduser usurio e Xs4passJd 5a usurio-
- 8 perguta e adicioa o usurio local ao sam;a +Xs4passJd 5a usurio-
- Deiicia o sam;a ? sudo ser,ice n4d restart e sudo ser,ice s4d restart A
- Pvisa :ue em ;reve o compartil.ameto 7 estar ativo e sai
Visuali(e a imagem a;ai$o para o errar a .ora de imprimir os dados o sm;=co*B
'esoluo
Pteo4 :uado *or veri*icar se o sam;a est istalado voc<
dever se re*erir a ele como sm;d
Captulo 1= >ndentao
!detao 9 um recuo o te$to4 a programao usamos para dei$ar os cdigos mais
legveis *acilitado assim a compreeso das vastas li.as de um script= >o s.ell ela o 9
o;rigatria4 mas se vamos escrever ceteas de li.as 9 recomedvel us-la=
Como o domio o tema vou dar a mi.a cotri;uio da *orma :ue uso4 eto sita-se f
votade em apro*udar o tema=
O coceito 9 simples se temos um cdigo detro de outro damos 3 espaos e assim por
diate=
Pcima temos o i* detro do M.ile4 por isto ele est 3 espaos a *rete e detro do i* temos
uma c.amada de *uo )istala+ e tam;9m est 3 espaos a *rete4 a situao do )else+ 9 a mesma
do )istala+ cose:uetemete esto a mesma colua e como o e$it est detro do )else+
cose:uetemete ele rece;e os espaos=
Depare os comados :ue *ec.am o M.ile e i* eles esto retes aos comados :ue os a;rem
?ol.e os potil.adosA4 assim mesmo se tivermos um Smero grade de i*s4 M.iles etc= o script o
dar tata co*uso 7 :ue *ica mais *cil de visuali(ar ode comea e ode termia as estruturas e
:uais comados esto detro de :uais comados=
Olhe a di2erena dos c%di*os se or*anizao#
Outra coisa que recoendo usar coentrios para di,idir seQes no script#
IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII
IIIIIIIIIIIIIIIIIIIIIIII CgPNP PU&CP IIIIIIIIIIIIIIIIIIIIIIIIIIIIIII
IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII
Cdigos
IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII
IIIIIIIIIIIIIIIIIIIIIIII C86!>6[PLP IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII
IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII
Cdigos
Ce :ual:uer *orma voc< etededo seus cdigos 9 o :ue importa=
Captulo 1B Script co /anelas
Script co /anelas
Ps 7aelas so uma esp9cie de iter*ace gr*ica para os ossos scripts :ue iteragem com o
clicar do mouse4 usado elas mel.oramos em muito sua apar<cia e *acilitamos a iterao com o
usurio= >s poderemos recol.er se.as4 respostas4 dar simples avisos etc= Vai depeder do tipo :ue
usaremos com o comado=
Ppeas o --tipo ser modi*icado a sita$e a;ai$o4 o resto 9 padro
dialog --tipo lte$tol altura largura
s*4o" +cai"a de ensa*e-
8ste tipo possi;ilita mostrar uma mesagem a tela ;astado dar oQ depois de lida para
prosseguir o script=
Sinta"eI$"eplo
dialog --msg;o$ l8sta 9 uma area restrital ' 41
Saindo assi no terinal#

>n2o4o" +cai"a de in2orao-
P:ui mostramos uma mesagem e logo em seguida o script cotiua e$ecutado sem pedir
co*irmao=
Sinta"eI$"eplo
dialog --i*o;o$ listalado os pacotesl 11 41
P seguir vamos co.ecer algus tipos de 7aelas
(e"t4o" +cai"a de te"to-
Com este tipo podemos e$i;ir um ar:uivo-te$to o termial como istru0es4 co*igura0es
etc= a;ai$o peo para o s.ell mostrar o ar:uivo de co*igurao do sam;aB
Sinta"eI$"eplo
dialog --te$t;o$ @etc@sam;a@sm;=co* 41 %1
Ode o usurio clica em L para su;ir o te$to e temos a porcetagem do :ue 7 *oi e$i;ido=
Yesno +Si ou no-
Pgora podemos *a(er uma perguta ao usurio e esperar :ue o mesmo respoda \es ou o
Sinta"eI$"eplo
dialog --\eso lCese7a istalar agora Yl # 31
2ara usar a resposta o script devemos utili(ar a varivel )VY+ ?leia a;ai$oA
$"ataente deste /eito: 4astando udar os coandos internos#
i* ^ VY O 1 _` t.e
apt-get istall *ire*o$
else
ec.o bVoc< pode istalar o avegador mais tardeb
e$it
*i
"oram apresetadas as 7aelas mais simples se voc< dese7a usar outros tipos4 a;ai$o temos
uma apresetao ;reve para :ue voc< possa pes:uisar sua utili(aoB
gauge Barra de porcetagem
c.ecQlist Nostra um meu para escol.as multiplas
meu Neu para a escol.a de apeas 1 item
caledar Nostra um caledrio para o usurio escol.er uma data
*select Cigita ou selecioa um ar:uivo
passMord;o$ 2ede uma se.a
Wero 9 correspode a sim
$"erccio 'esol,idos
$"erccio 1 Prieiro script
Ia@;i@;as.
I 8ste comeo tem apeas a parte escrita a tela
ec.o bBem vido ao sistema de marcao olieb
ec.o
ec.o
I 6e dou opo um9rica 9 mel.or4 assim evitamos do usurio digitar errado ou com acetos
ec.o b2or *avor digite a opo do turo dese7adob
ec.o
ec.o b1 - Na.b
ec.o b2 - [ardeb
ec.o b3 - >oiteb
ec.o I 8spao para o *icar em;olado com a resposta
I Col.edo os dados do turo
read [&D>O
I 8stou colocado como al*aum9rico por:ue o vou *a(er clculos e o :uero ter pro;lemas
i* ^ bV[&D>Ob O b1b _`t.e
ec.o bPpeas o Coutor -ager atede o turo da ma.b
*i
i* ^ bV[&D>Ob O b2b _`t.e
ec.o bPpeas a doutora Camila atede o turo da tardeb
*i
i* ^ bV[&D>Ob O b3b _`t.e
ec.o bPpeas o Coutor Cesar atede o turo oiteb
*i
I "a(edo o programa dormir por 2 segudos
sleep 2
ec.o
ec.o b6ua cosulta *oi marcada com sucessoab
I Cormido para dar tempo de ler a mesagem e depois sai
sleep 4
I 6aido
e$it
$"erccio 0 Script ais ela4orado
Ia@;i@;as.
ec.o bOl4 a;ai$o os carros dispoveis este m<sb
ec.o
ec.o b"errari4 2alio4 Celta4 Lam;org.ii e &ob
ec.o
I Dece;edo o valor do carro dese7ado
ec.o b]ual carro dese7a sa;er a classeY ?digite em miSsculoAb
read CPDDO
ec.o
I 6e carro 9 igual a lam;org.ii ou a *errari4 eto s pode ser classe P
I Colo:uei a varivel o te$to4 assim o :ue ele digitar vai aparecer o te$to
i* ^ bVCPDDOb O blam;org.iib -o bVCPDDOb O b*errarib _`t.e
ec.o bVCPDDO pertece a classe Pb
*i
i* ^ bVCPDDOb O bceltab _`t.e
ec.o bVCPDDO pertece a classe Bb
*i
i* ^ bVCPDDOb O bpaliob -o bVCPDDOb O buob _`t.e
ec.o bVCPDDO pertece a classe Cb
*i
e$it
$"erccio 7 5 A%*ica dos PC1 e PC0
Ia@;i@;as.
ec.o b2or *avor4 digite ligado ou desligado para i*ormar o estado dos computadores a;ai$ob
ec.o
ec.o b2C1b
read 2C1
ec.o
ec.o b2C2b
read 2C2
ec.o
I !>CD8N8>[O4 6e o usurio digitou algo :ue o se7a ligado e desligado4 eto cai este i*
i* ^ bV2C1b aO bligadob -a bV2C1b aO bdesligadob _`t.e
ec.o b8stado ivalido para 2C14 tete ovameteb
sleep 3
e$it
*i
I i* de erro para o 2C2
i* ^ bV2C2b aO bligadob -a bV2C2b aO bdesligadob _`t.e
ec.o b8stado ivalido para 2C24 tete ovameteb
sleep 3
e$it
*i
I 2osso usar tato b2C2 O desligadob :uato b2C2 aO ligadob a seguda opo vai o resto do script
I 6e pc 1 estiver ligado e o 2 estiver desligado *aa o comado
i* ^ bV2C1b O bligadob -a bV2C2b O bdesligadob _`t.e
ec.o bValor da amostra 9 igual a #b
*i
I Pcima4 se eu o icluir o 2C2 desligado vai virar uma ;agua e cair a:uele i* mesmo :uado
I 2C2 estiver ligado4 ou se7a4 mostrar mais de um resultado
I >o corre o risco do baO ligadob ser outra palavra :ue o se7a desligado4 7 :ue o primeiro
I !cremeto se ecarregou de elimiar outras escritas
i* ^ bV2C2b O bligadob -a bV2C1b aO bligadob _`t.e I 6e 2C2 estiver ligado ===
ec.o bValor da amostra 9 igual a 11b
*i
i* ^ bV2C1b O bligadob -a bV2C2b O bligadob _`t.e I 6e 2C1 e 2 estiverem ligados cai a:ui
ec.o bValor da amostra 9 igual a 1#b
*i
I !>CD8N8>[O4 mostrado o resultado :uado dois pcs estiverem C86L!ZPCO6
i* ^ bV2C1b aO bligadob -a bV2C2b aO bligadob _`t.e
ec.o bValor da amostra 9 igual a (erob
*i
e$it
$"erccio = 5 'eoto
Ia@;i@;as.
I Criado ou (erado os ar:uivos-te$to
ec.o bb E VgON8@comado
ec.o bb E VgON8@aviso
I Loop i*iito
*or ??loopO2`loopE1`loopLLAA`do
I Colocado a velocidade do loop em 1 miuto
sleep %1
ec.o Vloop I Nostrado a rodada a tela
I Ledo o ar:uivo-te$to e passado o valor para a varivel
CONP>COOV?cat VgON8@comadoA
I !>CD8N8>[O4 respode :ue esta rodado4 caso pergutado
i* ^ bVCONP>COb O bvivoYb _`t.e
ec.o bsim vivo4 esperado o comado4 loop Vloopb EE VgON8@aviso
CONP>COOVbb I (erado a varivel para o cair o pr$imo i*
ec.o E VgON8@comado I Limpado o ar:uivo-te$to
*i
I 6e a varivel CONP>CO o estiver va(ia4 eto vou e$ecutar o comado detro dela
i* ^ - bVCONP>COb _`t.e
VCONP>COF I Colo:uei o F para o script o *icar agarrado a:ui
ec.o E VgON8@comado I Limpado o ar:uivo com o comado
I 8screvedo o comado e$ecutado o ar:uivo avisos
ec.o b8$ecuteib VCONP>CO bloop Vloopb EE VgON8@aviso
*i
doe
I 8le uca vai sair do loop i*iito eto o 7usti*ica colocar o e$it
$"erccio B 5 Senha
Ia@;i@;as.
ec.o
ec.o b 6e7a Bem-vidob
ec.o
ec.o b2or *avor digite a se.a para logar o sistemab
ec.o
read 68>gP
I (erado a variavel de loop
$OVb1b
I 8:uato $ *or meor :ue 44 *aa ?cotei com a primeira tetativa acimaA
M.ile ^ V$ -lt 4 _`do
I 6e a se.a *or igual a 123 eto *aa o comado
i* ^ bV68>gPb O b123b _`t.e
ec.o
ec.o b6e.a correta4 logado o sistemab
sleep 2
e$it
*i
I 6e ele o cair o i*4 pede a se.a ovamete
ec.o
ec.o b6e.a icorreta tete ovameteb
read 68>gP
I colocado L1 para cotarmos as rodadas
$OV^V$L1_
doe
I "ora do loop eu coloco estes comados4 eto assim :ue as tetativas se esgotarem
I 8le sai do loop e e$ecuta a:ui
ec.o
ec.o b>Smero de tetativas esgotado4 tete mais tardeb
sleep 2
e$it
$"erccio D Pequeno desa2io de l%*ica
Ia@;i@;as.
I P:ui eu pego o valor da varivel para ser multiplicado
ec.o b2or *avor digite o Smero a ser processadob
ec.o
read >&N
I Cetermiado um valor para a varivel do M.ile
VOL[POVb1b
I Criado o loop4 assim vamos rodar o case 3 ve(es
M.ile ^ VVOL[P -lt 4 _`do I 8:uato VVOL[P *or meor :ue 4 *aa o comado ?roda 3 ve(esA
I 8stou usado a varivel de loop o case4 assim a cada rodada uma opo di*erete ser e$ecutada
case VVOL[P i
I 2ego o valor dado pelo usurio e multiplico pelo valor pr9-determiado o e$erccio
1A CO>[POV?? V>&N J 11 AA
ec.o bDodada 1 - V>&N multiplicado por 11 9 igual a VCO>[Pb``
2A CO>[POV?? V>&N J 21 AA
ec.o bDodada 2 - V>&N multiplicado por 21 9 igual a VCO>[Pb``
I P cada rodada a varivel CO>[P rece;er um valor di*erete4 eto o precisamos criar
Iuma varivel di*erete para cada opo do meu
3A CO>[POV?? V>&N J 31 AA
ec.o bDodada 3 - V>&N multiplicado por 31 9 igual a VCO>[Pb``

esac
I 6omado os Smeros de voltas do M.ile4 *ora do case logicamete
VOL[POV^ VVOL[P L 1 _
doe
$"erccio E 5 .uno e parTetro no eso script
Ia@;i@;as.
I eu o *i( os cdigos esta ordem a toa4 algumas caiam uma bsiuca de ;icob
ec.o
ec.o bBem vido V1b
I Col.edo os dados do cadastro
ec.o
ec.o bCigite o ome da sua cidadeb
read C!CPC8
ec.o
ec.o bCigite seu C82b
read C82
ec.o
I "uo :ue cadastra o C2"
CPCP6[DO?Ai
ec.o bCigite seu C2"b
read C2"
ec.o
ec.o bCadastro *iali(ado com sucessob
LOZP>CO I Pgora c.amamos a *uo de logar
j
LOZP>CO?Ai
ec.o
ec.o bCigite seu C2" para logarmosb
read C2"2
ec.o
I P:ui comparo os C2"s como te$to
i* ^ bVC2"b O bVC2"2b _`t.e I 6e C2" digitado ateriormete 9 igual ao agora4 eto logue
ec.o blogado com sucessob
sleep #
e$it I Cepois de dormir # segudos ele sai por:ue 7 alcaamos os ossos o;7etivos
else I 6eo *or igual durma e c.ame CPCP6[DO4 para rece;ermos o cp* ovamete
ec.o bC2" icorreto4 por*avor tete ovameteb
sleep 3 I Cado uma dormida para dar tempo do usurio ler a mesagem de erro
CPCP6[DO
*i
j
I O s.ell vai ler as duas *u0es4 depois passa por a:ui c.amado a *uo CPCP6[DO
CPCP6[DO
I P Sica *orma do usurio sair do script 9 digitado o C2" corretamete4 se *osse um script
I para empresa 9 claro :ue colocaramos outras op0es
$"erccio P Con2i*urando o Sa4a
Ia@;i@;as.
-![OV?M.ic. sm;dA
I 6e o sam;a o estiver istalado cai a:ui
i* ^ -( bV-![b _`t.e
ec.o bO sam;a o est istalado4 dese7a istal-lo agoraY s@b
read !>6[PLP
i* ^ bV!>6[PLPb O bsb _`t.e
apt-get istall sam;a
else
e$it
*i
*i
ec.o
ec.o b6e7a Bem-vido4 a seguir vamos co*igurar um compartil.ameto pu;licob
ec.o b8scol.a a opo dese7adab
ec.o
ec.o b1- 2ara ova co*iguraob
ec.o b2- 2ara adicioar um diretrio ao compartil.ameto 7 co*iguradob
ec.o b3- Pdicioar um ovo usuriob
read N8>&
case VN8>& i
1A
ec.o
ec.o
ec.o bCigite o ome da sua rede de compartil.ametob
read D8C8
ec.o
ec.o bCigite o edereo do diretrio a ser compartil.adob
read C!D8[OD!O
ec.o
ec.o b]ual o ome ser e$i;ido a rede para este diretrioYb
read >ON8HC!D
I Deomeado o ar:uivo de co*igurao para escrevermos um ovo
mv @etc@sam;a@sm;=co* @etc@sam;a@BRsm;=co*
I 8screvedo o ovo sm;=co*
ec.o b^glo;al_b E @etc@sam;a@sm;=co* I Werado ou criado o ar:uivo
ec.o bMorQgroup O VD8C8b EE @etc@sam;a@sm;=co*
ec.o bame resolve order O lm.osts Mis ;cast .osb EE @etc@sam;a@sm;=co*
ec.o bb EE @etc@sam;a@sm;=co* I 8screvedo uma li.a de espao
ec.o b^V>ON8HC!D_b EE @etc@sam;a@sm;=co*
ec.o bpat. O VC!D8[OD!Ob EE @etc@sam;a@sm;=co*
ec.o bread ol\ O ob EE @etc@sam;a@sm;=co*
ec.o bpu;lic O \esb EE @etc@sam;a@sm;=co*
I Loop :ue adicioa usurios de outro 2C
ec.o
ec.o bPlgum usurio de outra m:uia vai usar este compartil.ametoY s@b
read NP!6
M.ile ^ bVNP!6b O bsb _`do
ec.o

ec.o b]ualYb
read &6&HLP
adduser V&6&HLP
sm;passMd -a V&6&HLP
ec.o
ec.o bmais algum usurio para adicioarY s@b
read NP!6
doe
ec.o
ec.o bPgora i*orme o ome do seu usurio para :ue eu possa adicio-lob
read &6&
sm;passMd -a V&6&
service m;d restart E @dev@ull
service sm;d restart E @dev@ull
ec.o
ec.o bCo*igurao cocluda4 aguarde um mometob
ec.o bCe Liu$ para Liu$ demora um pouco a iiciarb
e$it``
2A
I Loop :ue adicioa mais diretrios
NP!61OVbsb I Zaratido o primeiro loop
M.ile ^ bVNP!61b O bsb _`do
ec.o
ec.o bCigite o edereo do ovo diretrio a ser compartil.adob
read C!D8[OD!O
ec.o
ec.o b]ual o ome ser e$i;ido a rede para este diretrioYb
read >ON8HC!D
ec.o bb EE @etc@sam;a@sm;=co* I 8screvedo uma li.a de espao
ec.o b^V>ON8HC!D_b EE @etc@sam;a@sm;=co*
ec.o bpat. O VC!D8[OD!Ob EE @etc@sam;a@sm;=co*
ec.o bread ol\ O ob EE @etc@sam;a@sm;=co*
ec.o bpu;lic O \esb EE @etc@sam;a@sm;=co*
ec.o
ec.o bmais algum diretrioY s@b
read NP!61
doe
service m;d restart E @dev@ull
service sm;d restart E @dev@ull
ec.o
ec.o bCo*igurao cocluda4 aguarde um mometob
e$it``
3A
I Loop :ue adicioa usurios de outro 2C
NP!62OVbsb I Zaratido o primeiro loop
M.ile ^ bVNP!62b O bsb _`do
ec.o bCigite o ome de usuriob
read &6&HLP
adduser V&6&HLP
sm;passMd -a V&6&HLP
ec.o bmais algum usurio para adicioarY s@b
read NP!62
doe
service m;d restart E @dev@ull
service sm;d restart E @dev@ull
ec.o
ec.o bCo*igurao cocluda4 aguarde um mometob
e$it``
esac