Documente Academic
Documente Profesional
Documente Cultură
ProgramandoemshellscriptDevin
Tutoriais
Dicas
Linux
Servidores
Internet
Programao
Programas
buscar...
Programao
21 0
09deagostode2004
Programandoemshellscript
170
590,887
729
32
12
70
ndicedeContedo
Primeiraparte,umaintroduo
ConceitodeVariveisem
shellscript
Controledefluxocomo
if
Outrasalternativas
Segundaparte,seaprofundando
mais!
case
for
while
until
Usandovriosscriptsem
ums
Variveisespeciais
Funes
ExemploFinal
Terceiraparte,janelasgraficas
Primeiraparte,umaintroduo
http://www.devin.com.br/shell_script/
1/22
14/04/2015
ProgramandoemshellscriptDevin
QuemusaLinuxconhecebemopromptdecomandosh,ouvariaescomoobash.Ouemuitagente
nosabequeoshouobashtmumapoderosalinguagemdescriptembutidonelasmesmasshell
script.Diversaspessoasutilizamsedestalinguagemparafacilitararealizaodeinmerastarefas
administrativasnoLinux,ouatmesmocriarseusprpriosprograminhas.PatrickVolkerding,criador
dadistribuioSlackware,utilizaestalinguagemparatodaainstalaoeconfiguraodesua
distribuio.Vocpodercriarscriptsparaautomarastarefasdiriasdeumservidor,paraefetuar
backupautomticoregularmente,procurartextos,criarformataes,emuitomais.Paravocvercomo
estalinguagempodesertil,vamosveralgunspassosintrodutriossobreela.
Interpretadoresdecomandossoprogramasfeitosparaintermediarousurioeseusistema.Atravs
destesinterpretadores,ousuriomandaumcomando,eointerpretadoroexecutanosistema.Elessoa
ShelldosistemaLinux.Usaremosointerpretadordecomandosbash,porsermaisextensoqueosh,
eparaquehajaumamelhorcompreensodasinformaesobtidasaqui,bomterumabasesobreo
conceitodelgicadeprogramao.
Umadasvantagensdestesshellscriptsqueelesnoprecisamsercompilados,ouseja,bastaapenas
criarumarquivotextoqualquer,einserircomandosele.Paradarestearquivoadefiniodeshell
script,teremosqueincluirumalinhanocomeodoarquivo(#!/bin/bash)etornloexecutvel,
utilizandoocomandochmod.Vamosseguircomumpequenoexemplodeumshellscriptquemostrena
tela:Nossa!Estouvivo!:
1
2
#!/bin/bash
echo'Nossa!Estouvivo!'
Fcil,hein?Aprimeiralinhaindicaquetodasasoutraslinhasabaixodeveroserexecutadaspelobash
(queselocalizaem/bin/bash),easegundalinhaimprimirnatelaafraseNossa!Estouvivo!,
utilizandoocomandoecho,queservejustamenteparaisto.Comovocpdever,todososcomandos
quevocdigitadiretamentenalinhadecomando,vocpoderincluirnoseushellscript,criandouma
sriedecomandos,eessacombinaodecomandosqueformaochamadoshellscript.Tentetambm
darocomandofilearquivoevejaqueadefiniodeledeBourneAgainShellScript(bashscript).
Contudo,paraoarquivopoderseexecutvel,voctemdeatribuirocomandodeexecutvelparaele.E
comocitamosanteriormente,ocomandochmodseencarregadisto:
$chmod+xarquivo
Pronto,oarquivopoderserexecutadocomumsimples./arquivo.
ConceitodeVariveisemshellscript
Variveissocaracteresquearmazenamdados,umaespciedeatalho.Obashreconheceumavarivel
quandoelacomeacom$,ouseja,adiferenaentrepalavrae$palavraqueaprimeirauma
palavraqualquer,eaoutraumavarivel.Paradefinirumavarivel,utilizamosaseguintesintaxe:
1
variavel="valor"
Ovalorseratribudoavarivel.Valorpodeserumafrase,nmeros,eatoutrasvariveise
comandos.Ovalorpodeserexpressadoentreasaspas(),apstrofos()oucrases().Asaspasvo
interpretarasvariveisqueestiveremdentrodovalor,osapstrofosleroovalorliteralmente,sem
interpretarnada,eascrasesvointerpretarumcomandoeretornarasuasadaparaavarivel.
Vejamosexemplos:
http://www.devin.com.br/shell_script/
2/22
14/04/2015
ProgramandoemshellscriptDevin
$variavel="Euestoulogadocomousurio$user"
$echo$variavel
Euestoulogadocomousuriocla
$variavel='Euestoulogadocomousurio$user'
$echo$variavel
Euestoulogadocomousurio$user
$variavel="Meudiretrioatualo`pwd`"
$echo$variavel
Meudiretrioatualo/home/cla
Sevocquisercriarumscriptemqueousuriodeveinteragircomele,possvelquevocqueiraqueo
prpriousuriodefinaumavarivel,eparaissousamosocomandoread,quedarumapausanoscripte
ficararesperandoousuriodigitaralgumvaloreteclarenter.Exemplo:
echo"Entrecomovalorparaavarivel:";readvariavel
(Ousuriodigitaeteclaenter,vamossuporqueeledigitoueusouumfrutinha)
echo$variavel
eusouumfrutinha
Controledefluxocomoif
Controledefluxosocomandosquevotestandoalgumasalternativas,edeacordocomessas
alternativas,voexecutandocomandos.Umdoscomandosdecontroledefluxomaisusados
certamenteoif,quebaseadonalgicaseacontecerisso,ireifazerisso,seno,ireifazeraquilo.
Vamosdarumexemplo:
1
2
3
4
5
6
if[e$linux]
then
echo'Avarivel$linuxexiste.'
else
echo'Avarivel$linuxnoexiste.'
fi
Oqueestepedaodecdigofaz?Oiftestaaseguinteexpresso:Seavarivel$linuxexistir,ento
(then)eledizquequeexistecomoecho,seno(else),eledizquenoexiste.Ooperadorequeusei
prdefinido,evocpodeencontraralistagemdosoperadoresnatabela:
eq Igual
ne Diferente
gt Maior
lt Menor
o Ou
d Seforumdiretrio
e Seexistir
http://www.devin.com.br/shell_script/
3/22
14/04/2015
ProgramandoemshellscriptDevin
z Seestivervazio
f Secontertexto
o Seousurioforodono
r Seoarquivopodeserlido
w Seoarquivopodeseralterado
x Seoarquivopodeserexecutado
Outrasalternativas
ExisteminmeroscomandosnoLinux,eparaexplicartodos,teramosdepublicarumverdadeirolivro.
Masexistemoutraspossibilidadesdeaprendizadodestalngua,quetambmusadoemtodasas
programaes.Primeirodetudovocpodedarumaolhadanamanpagedobash(comandomanbash),
quedisponibilizaroscomandosembutidosnointerpretadordecomandos.Umadascoisasessencias
paraoaprendizadosaircoletandoexemplosdeoutrosscriptseirestudandoosminuciosamente.
Procuresemprecomandoseexpressesnovasemoutrosscriptseemmanpagesdoscomandos.Epor
ltimo,masnoomenosimportante,praticarbastante!
Natabelaaseguir,vocpodeencontrarumalistagemdecomandosparausaremseushellscript:
echo Imprimetextonatela
read Capturadadosdousurioecolocanumavarivel
exit Finalizaoscript
sleep Dumapausaemsegundosnoscript
clear Limpaatela
stty Configuraoterminaltemporariamente
tput
if
Alteraomododeexibio
Controledefluxoquetestaumaoumaisexpresses
case Controledefluxoquetestavriasexpressesaomesmotempo
for Controledefluxoquetestaumaoumaisexpresses
while Controledefluxoquetestaumaoumaisexpresses
Eassimseja,crieseusprpriosscriptsefacilitedeumavezspartedesuavidanoLinux!
Segundaparte,seaprofundandomais!
FalamossobreoconceitodaprogramaoemShellScript,edemosoprimeiropassoparaconstruir
nossosprpriosscripts.Agoravamosnosaprofundarnoscomandosmaiscomplicados,aprendendoa
fazerprogramasaindamaisteis.Nestescomandosestoinclusosocaseeoslaosfor,whileeuntil.
Almdisso,vamosfalardefunese,porltimo,teremosumprogramaemshellscript.
case
Ocaseparacontroledefluxo,talcomooif.Masenquantooiftestaexpressesnoexatas,ocase
vaiagirdeacordocomosresultadosexatos.Vejamosumexemplo:
1
2
3
case$1in
parametro1)comando1;comando2;;
parametro2)comando3;comando4;;
http://www.devin.com.br/shell_script/
4/22
14/04/2015
4
5
ProgramandoemshellscriptDevin
*)echo"Voctemdeentrarcomumparmetrovlido";;
esac
Aquiaconteceuoseguinte:ocaseleuavarivel$1(queoprimeiroparmetropassadoparao
programa),ecomparoucomvaloresexatos.Seavarivel$1forigualparametro1,entooprograma
executarocomando1eocomando2seforigualparametro2,executarocomando3eocomando4,
eassimemdiante.Altimaopo(*),umaopopadrodocase,ouseja,seoparmetropassadono
forigualanenhumadasoutrasopesanteriores,essecomandoserexecutadoautomaticamente.
Vocpodeverque,comocaseficamuitomaisfcilcriarumaespciedemenuparaoshellscriptdo
quecomoif.Vamosdemonstraramesmafunoanterior,masagorausandooif:
01
02
03
04
05
06
07
08
09
10
11
12
if[z$1];then
echo"Voctemdeentrarcomumparmetrovlido"
exit
elif[$1="parametro1"];then
comando1
comando2
elif[$1="parametro2"];then
comando3
comando4
else
echo"Voctemdeentrarcomumparmetrovlido"
fi
Vejaadiferena.muitomaisprticousarocase!Avantagemdoifqueelepodetestarvrias
expressesqueocasenopode.Ocasemaisprtico,masoifpodesubstituloeaindaabrangemais
funes.Noteque,noexemplocomoif,citamosumcomandonovistoantes:oelifqueuma
combinaodeelseeif.Aoinvsdefecharoifparacriaroutro,usamosoelifparatestarumaexpresso
nomesmocomandoif.
for
Olaoforvaisubstituindoumavarivelporumvalor,evaiexecutandooscomandospedidos.Vejao
exemplo:
1
2
3
4
5
foriin*
do
cp$i$i.backup
mv$i.backup/usr/backup
done
Primeiramenteolaoforatribuiuovalorderetornodocomando*(queequivalenteaumlssem
nenhumparmetro)paraavarivel$i,depoisexecutouoblocodecomandos.Emseguidaeleatribui
outrovalordocomando*paraavarivel$1ereexecutouoscomandos.Issoserepeteatqueno
sobremvaloresderetornodocomando*.Outroexemplo:
1
2
3
4
5
6
fororiginalin*;do
resultado=`echo$original|
tr'[:upper:]''[:lower:]'`
if[!e$resultado];then
mv$original$resultado
http://www.devin.com.br/shell_script/
5/22
14/04/2015
7
8
ProgramandoemshellscriptDevin
fi
done
Aqui,oqueocorreatransformaodeletrasmaisculasparaminsculas.Paracadaarquivoqueolao
l,umavarivelchamada$resultadoirconteroarquivoemletrasminsculas.Paratransformarem
letrasminsculas,useiocomandotr.Casonoexistaumarquivoigualecomletrasminsculas,o
arquivorenomeadoparaovalordavarivel$resultado,demesmonome,mascomletrasminsculas.
Comoosexemplosilustram,olaoforpodeserbemtilnotratamentodemltiplosarquivos.Voc
podedeixlostodoscomletrasminsculasoumaisculassemprecisarrenomearcadaum
manualmente,podeorganizardados,fazerbackup,entreoutrascoisas.
while
Owhiletestacontinuamenteumaexpresso,atqueelasetornefalsa.Exemplo:
1
2
3
4
5
variavel="valor"
while[$variavel="valor"];do
comando1
comando2
done
Oqueaconteceaquioseguinte:enquantoa$variavelforigualavalor,owhileficarexecutando
oscomandos1e2,atquea$variavelnosejamaisigualavalor.Senoblocodoscomandosa
$variavelmudasse,owhileiriaparardeexecutaroscomandosquandochegasseemdone,poisagoraa
expresso$variavel=valornoseriamaisverdadeira.
until
Temasmesmascaractersticasdowhile,anicadiferenaqueelefazocontrrio.Vejaoexemplo
abaixo:
1
2
3
4
5
variavel="naovalor"
until[$variavel="valor"];do
comando1
comando2
done
Aoinvsdeexecutaroblocodecomandos(comando1ecomando2)atqueaexpressosetornefalsa,o
untiltestaaexpressoeexecutaoblocodecomandosatqueaexpressosetorneverdadeira.No
exemplo,oblocodecomandosserexecutadodesdequeaexpresso$variavel=valornoseja
verdadeira.Senoblocodecomandosavarivelfordefinidacomovalor,ountilpradeexecutaros
comandosquandochegaaodone.
Vejamosumexemploparaountilque,sintaticamenteinvertido,serveparaowhiletambm:
01
02
03
04
05
06
07
var=1
count=0
until[$var="0"];do
comando1
comando2
if[$count=9];then
var=0
http://www.devin.com.br/shell_script/
6/22
14/04/2015
ProgramandoemshellscriptDevin
08
09
10
fi
count=`expr$count+1`
done
Primeiro,atribumosvarivel$varovalor1.Avarivel$countserumacontagemparaquantas
vezesquisermosexecutaroblocodecomandos.Ountilexecutaoscomandos1e2,enquantoavarivel
$varforiguala0.Entousamosumifparaatribuirovalor0paraavarivel$var,seavarivel
$countforiguala9.Seavarivel$countnoforiguala0,somase1aela.Issocriaumlaoque
executaocomando10vezes,porquecadavezqueocomandodoblocodecomandosexecutado,
somase1varivel$count,equandochegaem9,avarivel$varigualadaazero,quebrando
assimolaountil.
Usandovriosscriptsemums
Podeseprecisarcriarvriosscriptsshellquefazemfunesdiferentes,mas,esevocprecisarexecutar
emumscriptshellumoutroscriptexternoparaqueestefaaalgumafunoenoprecisarreescrever
todoocdigo?simples,vocsprecisaincluiroseguintecomandonoseuscriptshell:
1
.bashscript2
Issoexecutaroscriptshellbashscript2duranteaexecuodoseuscriptshell.Nestecasoeleser
executadonamesmascriptshellemqueestsendousadoocomando.Parautilizaroutrashell,voc
simplesmentesubstituio.peloexecutveldashell,assim:
shscript2
tcshscript3
Nessaslinhasoscript2serexecutadocomashellsh,eoscript3comashelltcsh.
Variveisespeciais
$0
$1
$9
Nomedoscriptqueestsendoexecutado
$#
Nmerodeparmetrospassados
Valorderetornodoltimocomandooudetodooshellscript.(ocomandoexit1retornao
valor1)
NmerodoPID(ProcessID)
Parmetrospassadoslinhadecomando
$?
$$
Voctambmencontramuitasvariveis,jpredefinidas,napginademanualdobash(comandoman
bash,seoShellVariables).
Funes
Funessoblocosdecomandosquepodemserdefinidosparausoposterioremqualquerpartedo
cdigo.Praticamentetodasaslinguagensusamfunesqueajudamaorganizarocdigo.Vejamosa
sintaxedeumafuno:
1
2
funcao(){
comando1
http://www.devin.com.br/shell_script/
7/22
14/04/2015
3
4
5
ProgramandoemshellscriptDevin
comando2
[...]
}
Fcildeentender,no?Afunofuncionarcomoumsimplescomandoprprio.Vocexecutaafuno
emqualquerlugardoscriptshell,eoscomandos1,2eoutrosseroexecutados.Aflexibilidadedas
funespermitefacilitaravidadoprogramador,comonoexemplofinal.
ExemploFinal
Agoravamosdarumexemplodeumprogramaqueutilizeoqueaprendemoscomosartigos.
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
#!/bin/bash
#ExemploFinaldeScriptShell
#
Principal(){
echo"ExemploFinalsobreousodescriptsshell"
echo""
echo"Opes:"
echo
echo"1.Trasformarnomesdearquivos"
echo"2.Adicionarumusurionosistema"
echo"3.Deletarumusurionosistema"
echo"4.Fazerbackupdosarquivosdo/etc"
echo"5.Sairdoexemplo"
echo
echon"Qualaopodesejada?"
readopcao
case$opcaoin
1)Transformar;;
2)Adicionar;;
3)Deletar;;
4)Backup;;
5)exit;;
*)"Opodesconhecida.";echo;Principal;;
esac
}
Transformar(){
echon"ParaMaisculoouminsculo?[M/m]"
readvar
if[$var="M"];then
echon"Quediretrio?"
readdir
forxin`/bin/ls`$dir;do
y=`echo$x|tr'[:lower:]''[:upper:]'`
if[!e$y];then
mv$x$y
fi
done
elif[$var="m"];then
echon"Quediretrio?"
readdir
http://www.devin.com.br/shell_script/
8/22
14/04/2015
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
ProgramandoemshellscriptDevin
forxin`/bin/ls`$dir;do
y=`echo$x|tr'[:upper:]''[:lower:]'`
if[!e$y];then
mv$x$y
fi
done
fi
}
Adicionar(){
clear
echon"Qualonomedousurioaseadicionar?"
readnome
addusernome
Principal
}
Deletar(){
clear
echon"Qualonomedousurioadeletar?"
readnome
userdelnome
Principal
}
Backup(){
forxin`/bin/ls`/etc;do
cpR/etc/$x/etc/$x.bck
mv/etc/$x.bck/usr/backup
done
}
Principal
Terceiraparte,janelasgraficas
Nosdoistopicosanteriores,vimosalgumascoisasbsicaselgicasdeprogramaoemshellnoLinux.
Agoraparacompletar,dareiaquidicasdecomousarjanelasgrficasemseusshellscripts.Issomesmo,
janelasquerodamnoambientegrfico,utilizadasfacilmenteemseushellscript.Comesserecurso,vai
serpossveldeixaroseuprogramabemamigvel.
Novaiserprecisosabermuitacoisadeprogramaoemshell,poismuitosimples.Atravsdo
programaXdialog,vocpodercriarosmaisvariadostiposdejanelasparaoprograma:caixasdetexto,
selees,radios,etc.OXdialogumaidiaquevemdodialog/cdialog,umprogramaparaconsoleque
gerajanelasnoconsole(aquelasdainstalaodoSlackware)usandoabibliotecancurses.OXdialog
aoinvsdeusarabibliotecancurses,usaaXlibparacriarasjanelasnoambientegrfico.
PrimeirodetudosernecessriovocobteroXdialognoseusistema.NocomumoXdialogestar
inclusonasdistribuies,entovocterdepegarecompilaroprograma.ObtenhaoprogramanoCD
daRevistaouvisiteoendereooficialdoXdialog,quehttp://xdialog.free.fr.Aquieupegueioarquivo
Xdialog1.4.5.tar.bz2,eagoravamosaospassosbsicosparainstalarele.Primeirodescompacteocom
ocomandobunzip2Xdialog1.4.5.tar.bz2,elogoemseguidatarxpvfXdialog1.4.5.tar.Umdiretrio
chamadoXdialog1.4.5sercriado,eentrandonelevocestarprontoparacompilloeinstallo.Para
fazerissouseoscomandos./configure,depoismakeeporltimomakeinstall.Nopassodomake
http://www.devin.com.br/shell_script/
9/22
14/04/2015
ProgramandoemshellscriptDevin
install,obinriodoXdialogsercolocadoem/usr/local/bin.Pronto,agoravocjpoderutilizaro
Xdialogatravsdequalquershellscript.
Eagoravamosao!Comoaprendemosnosartigosanteriores,emshellscriptscolocarocomando
dentrodoarquivoqueelejvaiserexecutadoquandooscriptforexecutado.Entosoquetemosde
aprenderaquicomousaroXdialog.Vamosverumprimeiroexemplo:
1
2
3
4
5
6
7
#!/bin/bash
Xdialogtitle"Exemplonmero1!"centerstdoutyesno\
"Istolegal?"\
00
echo$?
Comovocpdever,oprogramaXdialoggerouumajanelacomttuloExemplonmero1!,
perguntandoIstolegal?ecomopesdeSimeNo.Notequea\(barra)serveparaindicarshell
paracontinuarocomandodalinhaseguinte,entoestastrslinhassoquenemumas.Comoltimo
comandodoexemplodado,temosoecho$?,queeucoloqueiapenasparaindicarqualfoioretornoda
pergunta.CasoousurioapertouemSim,oretornovaiser0,eseapertouemNo,vaiser1.Podemos
usaresteretornoparacontrolaroqueousurioescolher.Vejamosumexemplo:
1
2
3
4
5
6
7
8
9
Xdialogtitle"Exemplonmero2!"centerstdoutyesno\
"Nesteexemplo,vamosveroquevocquerfazer.Vocdesejacontinuarcom
00
if[$?="0"];then
echo"Quebom!Voccontinuouoprograma!Parabns!"
elif[$?="1"];then
echo"Vocsaiudoprograma..."
fi
Viucomofunciona?AgoravamosveroutrosrecursosqueoXdialogpodeoferecer.Euvoudarvrios
exemplosaquiesaircomentandocadaopo.Vocprecisarpraticarbastanteeconhecerasvrias
opes.Primeirovamosgerarumasimplesmensagemprousuriover:
1
2
3
4
5
6
Xdialogtitle"Aviso"centerstdoutmsgbox\
"EsteprogramaapenasumexemploparavocvercomooXdialog\
\nfunciona.Apropsito,sevocpraticarbastantepodecriar\
\nprogramasincrveisefacilmente,quedariamuitomais\
\ntrabalhofazendoemoutraslinguagens."\
00
OusurioapertaOkeoshellscriptcontinuanormalmente.Noprimeiroexemploeuuseiaopoyesno
quegeravaosimeno.Agorauseiomsgbox.Masesevocquiserqueousuriodigitealgoeistoseja
gravadoemumarquivoporexemplo?Vamosveresteexemplo:
1
2
3
4
Xdialogtitle"QueAnimequevocmaisgosta?"centerinputbox\
"SevocsabeoqueAnime,egosta,qualoseupreferido?\n\
Suarespostasergravadanoarquivoresposta."\
002>resposta
http://www.devin.com.br/shell_script/
10/22
14/04/2015
ProgramandoemshellscriptDevin
DepoisqueousuriopreencheocampoedOk,arespostaqueesteusuriodigitousergravadano
arquvioresposta.Istoocorreupelofatodeeutercolocadoodirecionador2>paraoarquivoresposta.Se
eucolocasseaopostdoutnalinhadecomandodoXdialog,arespostadousurioaparecerianatela.
Tentevoc.
Vamosveragoraseleodeitens,queumadascoisasmaisimportantesnumprograma.Destavez
usaremosaopomenuboxparagerarummenucomositensaseremselecionados.Maisumavez,
vamosaoexemplo:
1
2
3
4
5
6
7
8
Xdialogtitle"ExemplodeMenu"centerstdoutmenubox\
"QualsuadistribuioLinuxfavorita?"\
20500\
1"Slackware"\
2"Debian"\
3"RedHat"\
4"ConectivaLinux"\
5"Eutenhominhaprpriadistribuio"
Viucomofcil?Oqueousurioescolhervaiaparecercomoresultadonoconsole(porcausadaopo
stdout).Seeucolocasseoredirecionador2>,poderiairparaumarquivocomonoexemploanterior.
VamosesclarecerumacoisaaquitambmDepoisdotextoQualsuadistribuioLinuxfavorita?,h
2nmeros.Estesdoisnmeroscorrespondemalturaecomprimentodajanela.Nosexemplos
anterioreseucoloquei00poisaoXdialogdimensionaautomaticamenteotamanhodajanela.Ento
jsabe,sequisermudarotamanhodajanela,smudarestesdoisnmeros.
Agoracomoltimoexemplo,vamoscriarumajanelaemqueousuriopoderescolherumaoumais
opes.Istochamadodechecklist,epodeservistonoexemploaseguir:
1
2
3
4
5
6
7
8
Xdialogtitle"ltimoexemplochecklist"centerchecklist\
"ComosepronunciaLinux?"\
000\
"Opo1""Linucs"off\
"Opo2""Lenocs"off\
"Opo3""Lincs"off\
"Opo4""Lnucs"on\
"Opo5""GNUUU/Linux"off
Vejaagoraadiferenaentreestachecklisteomenudoexemploanterior.Verifiquequedepoisdecada
opohooneooff.Oonindicaqueestaopodeverjestarmarcada,eooffquenodeverestar
marcada.Seousurioescolher3opes,asmesmasserooresultado.
Bemfcilcriarumainterfaceamigvelparasuasshellscripts.Sevocpensaqueistotudo,aindatem
muitomaisportrsdoXdialog.Paranoterqueficarcomentandocadaopo,voudarumalistade
parmetroseadescriodesuasfunes.Oquevocdeverfazersairtestandotodasasopesese
impressionar:)
yesno
UmajanelacomopesdeSimouNo
msgbox Apenasmostraumtextoinformativo
infobox Mesmoquemsgbox,squedesapareceautomaticamenteemumdeterminadotempo
inputbox Ousuriopreencheumcampo
rangebox EscolheumnmeroentreXeY,comumabarraderolagem
textbox Mostraocontedodeumarquivonumacaixadetexto
http://www.devin.com.br/shell_script/
11/22
14/04/2015
ProgramandoemshellscriptDevin
editbox Editaocontedodeumarquivonumacaixadetexto
menubox CriaumMenudeopes,ondeseselecionaumitem
checklist Mesmoquemenubox,squepodeseselecionarvriositens
radiolist Mesmoquemenubox,masagoraemoutroestilo
treeview Opesorganizadasemformadervore(interessante)
gauge
tailbox
Umindicadordeprocesso
Mostraocontedodeumarquivo
fselect
dselect
Abreumajaneladeseleodeumarquivo
Abreumajaneladeseleodeumdiretrio
calendar Mostraumcalendrioparaescolherumadata
timebox Mostraumajanelaparaediodehorrio
Voctambmpodeencontraralgunsexemplosnodiretriosamplesquevemjuntocomocdigofonte
doprograma.Sevocfizeralgumprogramalegalemshellscript,sintaseavontadeparamemandarum
email.Outracoisa,comooXdialogumaidiatiradadodialog/cdialog(existetambmowhiptailque
parecido),vocpodeusaramesmasintaxeparacriarestasjanelasnomodoconsole.Esperoque
estasinformaesforamteisavoceataprxima:)
170
590,887
729
32
12
70
bashshshellshellscripttutorial
HugoCisneiros(Eitch)
ApaixonadoporLinuxeadministraodesistemas.ViciadoemInternet,servidores,eempassar
conhecimento.IdealizadordoDevin,temcomometaaprendereensinarmuitoLinux,oqueelevem
fazendodesde1997:)
http://www.devin.com.br/shell_script/
12/22
14/04/2015
ProgramandoemshellscriptDevin
ShellScript:tratamentodeargumentoseopes
ShellScript:ReconexoAutomtica
Shell:EntradaeSada
RecentTrackbacks
Tpico105subtpico2seo1:Sintaxepadrosh|WargateSafe
[...]variavel=naovaloruntil[$variavel="valor"]docomando1comando2doneSeemoreat:
http://www.devin.com.br/shell_script/#sthash.tv3Eppib.dpuf[...]
deuzebranaweb.com.brhttp://www.devin.com.br/shell_script/
[...]NoComments.EntendendoTCP/IP(Parte5)&#...[...]
LinkparaestudodeShellScript(2unidade)|CloudN3tworks
[...]SHELLSCRIPT2UNIDADE[...]
AutoEstudoLPI|PortaldoEducadorAcademiadePrticasInovadoras.
http://www.devin.com.br/shell_script/
13/22
14/04/2015
ProgramandoemshellscriptDevin
[...]4.ShellScript:http://www.devin.com.br/shell_script/[...]
MandaremailvialinhadecomandonoLinux|FabioAnjosI.T.
[...]comorecursodeshell,queporsuavezpermitecriarpoderososprogramasquesochamadosdeshellscripts.Vejamos
aquiestapequenadicadecomoenviaremailvialinhade[...]
Showmoretrackbacks
Comentrios(154)
Logar
sensacional,belopostpraquemdesejaaprenderseucontedoexcelente,parabns....
Responder
MarcelloHenrique 5semanasatrs
SouestudantedeRedesdeComputadores,enaCadeiradeSegurana,oprofessorpediupraagentefazerumScriptem
Bash,implementandoaCifradeCsar.Pormjpesquiseiemvrioslugares,masaindanoobtiveResultadoconcreto
respeito.
PoderiameajudarcomesseProjeto?
DesdejAgradeo!!!
Responder
MarcelLuizPereira 8semanasatrs
Hugo,bemlegaisasinformaessobrelinux.Gostariadetermaisinformaessobrelinuxrelacionadosaprojetose
sistemasSOAP.
Att,
MarcelLuizPereira
AnalistadeSistemaseProjetos
Responder
GabrielNeres 20semanasatrs
Muitoobrigado,excelentetutorial=]
Responder
1respostaativo14semanasatrs
Rodrigo 23semanasatrs
Olaamigosprecisofazerviashellscriptestecaracombo_net_ativacao_141029150709.ZIPficarassim
20141029173800_COMBO_NET_ATIVACAO.ZIP
Responder
Anselmo 73semanasatrs
Olamigoscomofazerparacalcularpotnciadeumnmeronoshellscrpt
Responder
2respostasativo28semanasatrs
http://www.devin.com.br/shell_script/
14/22
14/04/2015
ProgramandoemshellscriptDevin
Wellington 28semanasatrs
HUGOCISNEIROSUMALENDA!TENHOUMTUTORIAL/MANUALGNU/LINUXAQUISUPER10QUEBAIXEI
EM2004NOSITE"IMASTERS".
Parabnspelaexcelentematria!
Responder
Gabriela 37semanasatrs
Parabeenscara!Tamuitolegal
Responder
Kelvin 42semanasatrs
OlHugoparabnspeloblog!showdebolavouaddnosfavoritoscomcerteza!AgorasobreoDialog,temcomome
explicarcomoumabarradeprogressocomogauge?
masseguinte,acheivriosexemplosdecomoficariaduranteumacpiadearquivoecomousodewget.Agoragostaria
desabersetemcomoexplicarcomoficausandoumcomandoaptgetinstallpacote,ouumdpkgipacote.debouat
mesmoum*.bin...
Serquepodemeexplicarcomoficariaocdigo,tenteivriasevriasmaneirasenadadefuncionar:(
Valeu!
Responder
narviksw 46semanasatrs
Boanoite,
Precisoescreveraslinhasabaixodentrodoarquivo/etc/environment.
Eleescreve,massemasaspas,ficandodestejeito:http_proxy=http://192.168.0.105:3128/
Comofaoparaquefiquecomoabaixo,comaspas,paraoproxyfuncionar?
echohttp_proxy="http://192.168.0.105:3128/">>/etc/environment
echohttps_proxy="https://192.168.0.105:3128/">>/etc/environment
echoftp_proxy="ftp://192.168.0.105:3128/">>/etc/environment
echono_proxy="https://192.168.0.99">>/etc/environment
Gratopelacolaborao.
Tenhaumaotimanoite.
Responder
3respostasativo45semanasatrs
Viviane 46semanasatrs
BoatardeHugo,
Estoucomdificuldadeparagerarbackupcomotar,estoufazendoassim:
DIR_1="/etc"
DIR_2="/usr/local"
NAME=AdrianoViviane_`date+%a`.tar.gz
FTP=192.168.25.83
USER=*******
PASS=*******
http://www.devin.com.br/shell_script/
15/22
14/04/2015
ProgramandoemshellscriptDevin
tarzcvf$NAME$DIR_1$DIR_2
Sounovaemlinuxenoseioqueestoufazendodeerrado,masessescriptestmostrandotodososarquivosdos
diretriosnatela.
Agradeopelaajuda.
Parabnspelapostagem,meajudouemalgumasoutrasdvidas.
Responder
1respostaativo46semanasatrs
Marcelo 60semanasatrs
+1
Excelentetutorial!!!
Muitoobjetivo,diretoesimples.Parabns.
Responder
http://www.meckerecke.org/wbb2/thread.php?threadid=3889&sid= 73semanasatrs
WhetherCutler'scontractyearhasalucrativeendingdependsonwhetherhecansummonthemagicandgoodfortune
Flaccoeventuallydid.Fornow,CutlerisexpectedtomissSunday'sgamebetweentheBearsandRavensbecauseofa
highanklesprain.
http://www.meckerecke.org/wbb2/thread.php?threadi...http://www.meckerecke.org/wbb2/thread.php?
threadid=3889&sid=
Responder
JozenirLima 104semanasatrs
Boanoite!DesejariasabercomofaoprautilizaroDIVeoMODemShellScript?Ouseexistealgumoperadorsimilar
paraeles?
Responder
1respostaativo84semanasatrs
Agnaldo 99semanasatrs
Estouprecisandodeumaajuda????
PrecisocolocarumcomputadorcomUbuntu1204LTSemumdominioWin2003,tudoconfiguradoeosusurios
logandopeloLinuxnoWin2003serversemproblemas,masprecisoqueosusuriosaoselogaremnodominiomapeiem
osdrivesdetrabalho,observao,sousurioscompastasdiferentesepermissesnoarquivo.batcriadoparacadaum.
SeriapossvelcriarumscriptshellquepermitaserexecutadonainicializaodoLinuxquepasseoUsurioeSenhapara
oServidorWin2003,emapeieusandooarquivo.batexistentenowin2003server.
Seforpossvelteriacomoenviarumexemplo????
Obrigado.
Responder
SiteInstitucional 101semanasatrs
Comeceiausarolunix(ubuntu)eaospouquinhosfuimeaventurandonoterminal,incrvelcomopodesersimples
programar.Evidentequeprecisadesenvolverseusconhecimentos.umaexcelenteferramentameapaixoneiporlinux
porcausadoterminal.Hojenovivosemele.Obrigadopelomaterial.
Responder
http://www.devin.com.br/shell_script/
16/22
14/04/2015
ProgramandoemshellscriptDevin
ECJ 105semanasatrs
Muitobom!!!Nota10!!
Estouacostumadoafazer.bateestoutentandoentrarnomundolinux...
Estouprocurandoalgocomolerdeterminadoregistrodentodeumarq.paracomentar(inibir)oregistro....Estavaatrsde
comomontartelaseetc...Asdicasacimasotimas,paraquemaindanosabenada...
Responder
Sandro 107semanasatrs
Estoucomumaduvida,precisodeumscriptquefaaoseguinte:
temumdiretorioXeumachamadatipo./teste.shmasessachamadaestnocrontabespodeserexecutadaquandonesse
diretorioestiveremdoisarquivosum.csveoutro.txtpoisdesejoprogramalaparaverificartodososdiasdemeiaemeia
hora.
Responder
MarcosYoshihiroNak 111semanasatrs
Muitobom,parabns.
Obrigadoporcompartilhar.
Responder
PabloCSC 120semanasatrs
Opamuitobom*
Responder
PabloCSC 120semanasatrs
muitocomcaraparabens
Responder
Ventura 137semanasatrs
Muitobom.Acrescentououtrosconhecimentosqueprecisava...Noatoaqueeste"tutorial"vistodesde24demarde
2008.ParabnsHugoCisneiros.
Responder
Marco 137semanasatrs
Muitobom,eussentifaltadeumaexplicaocomaplicaodocomandogrep.
Responder
Silvana 147semanasatrs
Valewdeverdade,conseguitirarvriasdvidas.
Obrigadao
Responder
http://www.devin.com.br/shell_script/
17/22
14/04/2015
ProgramandoemshellscriptDevin
GustavoDutra 148semanasatrs
Muitobomcara!Eutenhoalgunsartigossobreshellscriptnomeublog.Inclusiveestoufazendoumframeworkparashell
script!Achomuitomassaessalinguagem!
Responder
GutenbergCampos 149semanasatrs
Carasepuderajudar:
tenhoumscriptquecriaumalistaondealgunsparametrossonecessrios,tipo:
nomedalista(conseguiresolver)
crieiumtxtcomonomedaslistaseumshellscriptquellinhaporlinhadotxtecolocanavar$listaonomedalista
Oproblemasoosparametrosaseguir:
emaildodono(naoconsegui)vaiserpadraotipoxxxx@mydomain.net
pwddalista(naoconsegui)vaiserpadraotipo123456
tecleenterparacontinuar(naoconsegui)
Podeajudar?
Responder
CarlosFagianiJunio 152semanasatrs
Heathz,
Oscriptsexecutaumcomandoporvez...Quandoasinstruesdocomandoterminamqueelechamaaprxima
sevctiverumscriptcomainstruo:
#
wgetwww.site.com.br/arquivo_download.tar.gz
echo"Downloadconcludooufalhanodownload"
#
Elesvaimostrarotextonoterminalseodownloadforconcluidoousehouverfalha,agoranotempododownloadele
vaificaraguardandoowgetterminar.
Responder
Heathz 166semanasatrs
aecara...enocasodeeuterumscriptquefazdownloaddeumarquivooucompactaumgrandearquivooualgoqueexija
tempoparaserexecutadoedepoisdissoexecutaoutroscomandoscomoarquivonovo(criadooubaixado...)comofao
paraoscriptficarparadoatodownloadterminar?
Responder
PauloFrana 167semanasatrs
Parabnspelopost.Obrigadoportornarmenoraminhaignornciaquantoaoassunto
http://www.devin.com.br/shell_script/
18/22
14/04/2015
ProgramandoemshellscriptDevin
Responder
DanielDonda 172semanasatrs
Parabns,umdosmaisdidaticosecompletosqueeujv.
Responder
DanielCamposRodrig 173semanasatrs
DanielCamposRodrigues
Quebacana!!!
Parabens,umaaula!!!Queosproximospossamserassim...
Parabens!!!
Responder
Joao 174semanasatrs
ninguemparaajudar????:/
Responder
caro 174semanasatrs
massoparceirobemresumidogosteifoifera!!!!
Responder
Joao 175semanasatrs
Ol
Souinicianteeestoucomumproblemao.
Precisoexecutar1scriptparainstalacaoemvariasmaquinasdistintas
Porem,precisoexecutarcomoroot,alguemteriacomomeajudar?
#!/bin/bash
suc'rpme$(rpmaq|nome_do_arquivo)'
suc'rpmi$(rpmaq|arquivo1)'
obrigado
Responder
Marck1 177semanasatrs
Vlwbro`
tilpacas!!!
Responder
http://www.devin.com.br/shell_script/
19/22
14/04/2015
ProgramandoemshellscriptDevin
Myssbot 178semanasatrs
euviexatamentemesmotextoecoodigonaauladehojena4linux,eoprofessortinhaditoqueelequemfez,ese
recusoudarocodigopraumalunoquepediu!!!
professorkleber,modulo451,dia11/11/11
Responder
Catonho 179semanasatrs
Obrigado,foidegrandeajudaocontedo.
Parabns.
Responder
JosAmarildo 179semanasatrs
Valewcara!vcdeuumagrandeajudaasessesestudantesdesorientadoscomlinuxcomoeu!rsrrsParabns!!!!!
Responder
elo 179semanasatrs
parabnspelotutorial,linguagemfaciledefacilintendimento..
Responder
luis 180semanasatrs
Excelente,maravilhaquandoseaprendeisto...
facilita!
SodoXdialognoconseguifuncionar,instaleibeleza,masnofuncionounosscripts...
Responder
lucelimoreira 181semanasatrs
Boatarde!estamoscomeandocompostgresqleprecisosabercomoconstruirshellscriptcomcomandospostgreex:
conectarembancos,extrairdadosdastabelas,consultar,desconectardosbancos.Casosouberdedocumentaonanet
favormeinformar.
Obrigada/Lu
Responder
patrick 184semanasatrs
QuerosaberaondeficaoScriptdesejado,euprocuroassimnaGoogle,AondeficaoScriptdesejado,pessoalsevoc
souberemmefaleporfavoratamanh.
Responder
Gabriel 187semanasatrs
http://www.devin.com.br/shell_script/
+1
20/22
14/04/2015
ProgramandoemshellscriptDevin
Muitobomotutorial!
alguemsabeseemshellscripttambemtem"dowhile"?
porexemploqueroquecontinueemumloopenquantoousuarionaodigitarumvalorvalido
exemplo:
do
{
printf:digiteumvalor:#exibenatela
scanf:op#recebeovalordousuario
}
while(op>3||op<1)#enquantonaodigitarumvalorvalidovaificaraparecendodigiteumvalor
Responder
Aurelius 188semanasatrs
Gosteimuitodestetutorial.Souinicianteemesenticonfortvelcomaformaquefoiexplicado.
Parabns.
Responder
cidolouko 193semanasatrs
Ficouotimootutorial...aprendimuito...poremoXdialogjaestaumpoucodefasadoenaovemmaisnoubuntu...teria
comofazerummaisatual?
Obrigado!
Responder
1 2 3 Next
Postarumnovocomentrio
Digiteotextoaqui!
ComentarcomoVisitante,oulogar:
Nome
Website(opcional)
Mostrarjuntoaosseuscomentrios.
Nomostradopublicamente.
Sevoctemumwebsite,linkeparaeleaqui.
Assinar Nada
http://www.devin.com.br/shell_script/
EnviarComentrio
21/22
14/04/2015
ProgramandoemshellscriptDevin
Commentsby
Tutoriais
Dicas
Changelog
Contato
TermosdeUso
20012013Devin.Consulteostermosdeuso.
http://www.devin.com.br/shell_script/
22/22