Documente Academic
Documente Profesional
Documente Cultură
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