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
echo$1naoestalogado
fi
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

Você também pode gostar