Você está na página 1de 13

ShellScript

Estruturascondicionais

ShellScriptEstruturascondicionais
Umalinguagemdeprogramaonopodesobreviversemestruturas
condicionais.Asestruturascondicionaissousadasemtarefasmuito
corriqueiras.
ParapodermoscompreenderaestruturacondicionaldoShellScript,
primeirotemosquesabercomoeletestaseumacondiofalsaou
verdadeira.Paraisso,oshellscripttrabalhacomumcdigoderetorno.
Essecdigoderetornoficaguardadodentrodeumavarivelque
representadapor$?(cifro+pontodeinterrogao).
Demodoqueseumcomandonoshellforexecutadocomsucesso,o
cdigoderetornoserigualaZERO.
Seumcomandonoshellfalhar,ovalorretornadoserDIFERENTEDE
ZERO.

ShellScriptEstruturascondicionais
Exemplo:
ListandoumarquivoqueNOexiste:
$lsnada
ls:nada:Arquivooudiretrionoencontrado
Qualdeveserocdigoderetorno?
Diferentede0!

Verificando:
$echo$?
2

Ocdigoderetornofoidiferentedezero,entoocomandoNOfoi
executadocomsucesso.

ShellScriptEstruturascondicionais
Ocomandoif
if<comando>Se<comando>forbemsucedido,isto,$?igualazero

then

<comando_1>

<comando_2>

<comando_n>
elseSe<comando>NOforbemsucedido,isto,$?diferentedezero

<comando_3>

<comando_4>

<comando_z>

fi

ShellScriptEstruturascondicionais
OcomandoifdoShell,noseuformatogeral,notestaumacondioe
simseumainstruofoiexecutadacomsucessoouno,isto,seseu
cdigoderetornoounoigualazero,maspossveltestarcondies
tambm,veremosmaisnafrente.
UseoeditordetextosVIparaescreveressescript:
$vitalogado.sh
#Verificaseumusurioestlogadoounonosistema
#!/bin/bash
ifwho|grep$1

then

echo$1estalogado

else

fi

echo$1naoestalogado

ShellScriptEstruturascondicionais
Ocomandotest
Ora,masvocdeveestarseperguntandoseocomandoiftestao
contedodavarivel$?,comofareiparatestarcondies???
Sintaxe:
$test<expresso>
Exemplo:
$resposta=N
Comoatribuioacima,sembrancosantesedepoisdoigual
$test$resposta=N
Comocomparaoacima,combrancosantesedepoisdoigual
$echo$?
0(SeasadaZERO,logoverdadeirooteste.)

ShellScriptEstruturascondicionais
Principaisopesdocomandotest
testr<arquivo>Testasetempermissodeleitura
testw<arquivo>Testasetempermissodeescrita
testx<arquivo>Testasetempermissodeexecuo
testf<arquivo>Testaseumarquivoregular
testd<arquivo>Testaseumdiretrio
testu<arquivo>TestaseseuSUIDestativado
testg<arquivo>TestaseseuSGIDestativado
tests<arquivo>Testaseseutamanhomaiorquezero
Exemplo:
$testrwgetlog
$echo$?
0

ShellScriptEstruturascondicionais
num1eqnum2:num1igualanum2(equalto)
num1nenum2:num1diferentedenum2(notequalto)
num1gtnum2:num1maiorquenum2(greaterthan)
num1genum2:num1maiorouigualanum2(greaterorequal)
num1ltnum2:num1menorquenum2(lessthan)
num1lenum2:num1menorouigualanum2(lessorequal)
Exemplo:
$test1eq2
$echo$?
1(diferentedezero,podetercomosadaoutronmero)

ShellScriptEstruturascondicionais
&&(and/elgico)
Umtesteentreduascondiescom&&sretornaverdadeiroseAMBAS
condiesforemseesomenteseverdadeirasdeacordocomatabela
verdade.
$a=10
$b=9
$echo$a&&echo$b
10
9

ShellScriptEstruturascondicionais
||(or/oulgico)
Umtesteentreduascondiescom||retornaverdadeirosealguma
dessasforverdadeira.
Seaprimeiraforverdadeiraasegundanemexecutada.
$a=10
$b=9
$echo$a||echo$b
10

ShellScriptEstruturascondicionais
Ocomandocase
Usamosocomandocasequandoaquantidadedecomandos
condicionais(if)sejamaiorquetrs.Issoagilizaaexecuo,aumentaa
legibilidadeediminuiotamanhodocdigo.

Sintaxe:
casevalorin

padr1)
padr2)
padr3)
<comando1>

<comando1>

<comando1>
<...>

<...>

<...>
<comandon>

<comandon>

<comandon>
;;

;;

;;
esac

ShellScriptEstruturascondicionais
Ovalorcomparadoacadaumdospadres(padr1,padr2,...,padrN),
atquesatisfaaaumdeles,quando,ento,passaraexecutaros
comandossubseqentesatquedoispontosevrgulassucessivos(;;)sejam
encontrados.
VeremosumexemplodocaseemChat.:)

Bibliografia
ProgramaoShellLinux3edio
Autor:JulioCezarNeves
Editora:BRASPORT