Sunteți pe pagina 1din 22

14/04/2015

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

Classificarpor: Data Classificao ltimaAtividade


marcio 2semanasatrs

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

Email

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

S-ar putea să vă placă și