Sunteți pe pagina 1din 5

CONDICIONALESBIFURACIONESYCICLOS

EnBashexistenestasconstruccionesparacontrolarelflujodeejecuciondeunscript:

if/else:Ejecutaunaseriedecomandosdependiendosiunaciertacondicionsecumpleono.
for:Ejecutaunaseriedecomandosunnumerodeterminadodeveces.
while:Ejecutaunaseriadecomandosmientrasqueunadeterminadacondicionseacumpla.
until:Ejecutaunaseriedecomandoshastaqueunadeterminadacondicionsecumpla.
case:Ejecutaunaovariaslistasdecomandosdependiendodelvalordeunavariable.
select:Permiteseleccionaralusuariounaopciondeunalistadeopcionesenunmenu.

Lamayoriadecondicionesutilizadasconestasconstruccionessoncomparacionesdecadenas
alfanumericasonumericas,valoresdeterminaciondecomandosycomprobacionesdeatributosde
ficheros.Antesdeseguirviendocomoestasconstruccionessepuedenutilizar,vamosavercomolas
condicionessepuedendefinir.

Comparacionesdecadenasalfanumericas
OperadorVerdad(TRUE)si:

cadena1=cadena2cadena1esigualacadena2
cadena1!=cadena2cadena1noesigualacadena2
cadena1<cadena2cadena1esmenorquecadena2
cadena1>cadena2cadena1esmayorquecadena2
ncadena1cadena1noesigualalvalornulo(longitudmayorque0)
zcadena1cadena1tieneunvalornulo(longitud0)

Comparaciondevaloresnumericos
OperadorVerdad(TRUE)si:

xltyxmenorquey
xleyxmenoroigualquey
xeqyxigualquey
xgeyxmayoroigualquey
xgtyxmayorquey
xneyxnoigualquey

Comprobaciondeatributosdefichero
OperadorVerdad(TRUE)si:

dficheroficheroexisteyesundirectorio
eficheroficheroexiste
fficheroficheroexisteyesunficheroregular(noun
directorio,uotrotipodeficheroespecial)
rficheroTienespermisodelecturaenfichero
sficheroficheroexisteynoestavacio
wficheroTienespermisodeescrituraenfichero
xficheroTienespermisodeejecucionenfichero(odebusqueda
siesundirectorio)
OficheroEreseldueodelfichero
GficheroElgrupodelficheroesigualaltuyo.
fichero1ntfichero2fichero1esmasrecientequefichero2
fichero1otfichero2fichero1esmasantiguoquefichero2

Podemoscombinarvariascondicionesconlossimbolos'&&'(AND)y'||'(OR),ynegaruna
condicioncon'!'.Unosejemplosmasadelanteaclararancomoutilizarlos.

if/else
Lasintaxisdeestaconstruccioneslasiguiente:
if"condicion"
then
"comandos"
[elif"condicion"
then
"comandos"]
[else
"comandos"]
fi

Comoyahemosdicho,podemoscomprobarlosvaloresdeterminaciondeuncomando,ycomparar
cadenasalfanumericas/numericasyatributosdeficheros.Nadamejorqueunosejemplospara
aclararnoslasideas.
#!/bin/bash
#
#Comprobandoterminaciondeuncomando
#
DIRECTORIO="/tmp/test"
COMANDO="/bin/mkdir$DIRECTORIO"
if$COMANDO
then
echo"$DIRECTORIOhasidocreado"
else
echo"$DIRECTORIOnopudosercreado"
fi
#!/bin/bash
#
#Comparaciondecadenasalfanumericas
#
CADENA1="uno"
CADENA2="dos"
CADENA3=""
if[$CADENA1=$CADENA2];then
echo"\$CADENA1esiguala\$CADENA2"
elif[$CADENA1!=$CADENA2];then
echo"\$CADENA1noesiguala\$CADENA2"
fi
if[z$CADENA3];then
echo"\$CADENA3estavacia"
fi

#!/bin/bash
#
#Comparaciondevaloresnumericos
#

letNUM1=1
letNUM2=2
letNUM3=3
if[$NUM1ne$NUM2]&&[$NUM1ne$NUM3];then
echo"\$NUM1esdiferentea\$NUM2y\$NUM3"
fi
if[$NUM1lt$NUM3];then
echo"\$NUM1esmenorque\$NUM3"
fi

for
Lasintaxisdeestaconstruccioneslasiguiente:
fornombre[inlista]
do
comandosquepuedenutilizar$nombre
done

Unejemplonosaclararalascosas.VamosalistarinformacionenelDNSdeunalistadedirecciones
web:
#!/bin/bash
forHOSTinwww.google.comwww.altavista.comwww.yahoo.com
do
echo""
echo$HOST
echo""

/usr/bin/host$HOST
echo""
done

while
Lasintaxisdeestaconstruccioneslasiguiente:
whilecondicion
do
comandos
done

Unejemplosimpleconwhileendondeescribimoselvalordeunavariable10veces,despuesde
incrementarsuvalor:
#!/bin/bash
NUM=0
while[$NUMle10];do
echo"\$NUM:$NUM"
letNUM=$NUM+1
done

until
Lasintaxisdeestaconstruccioneslasiguiente:
untilcondicion;do
comandos
done

Unejemplosimpleconuntilendondeescribimoselvalordeunavariable10veces,despuesde
incrementarsuvalor:
#!/bin/bash
NUM=0
until[$NUMgt10];do
echo"\$NUM:$NUM"
letNUM=$NUM+1
done

case
Lasintaxisdeestaconstruccioneslasiguiente:
caseexpresionin
caso_1)
comandos;;
caso_2)
comandos;;
......
esac

Unejemplosimpleconcaseparaaclararlascosas:
#!/bin/bash
forNUMin0123
do
case$NUMin
0)
echo"\$NUMesigualacero";;
1)
echo"\$NUMesigualauno";;
2)
echo"\$NUMesigualados";;
3)
echo"\$NUMesigualatres";;
esac
done

select
Lasintaxisdeestaconstruccioneslasiguiente:
selectnombre[inlista]
do
comandosquepuedenutilizar$nombre
done

Unejemplosimpleparaaclararlascosas.

#!/bin/bash
selectOPCIONinopcion_1opcion_2opcion_3
do
if[$OPCION];then
echo"Opcionelegida:$OPCION"
break
else
echo"Opcionnovalida"
fi
done

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