Está en la página 1de 18
Programación Linux bash - Estructuras de control y bucles.
Programación Linux
bash - Estructuras de control y bucles.
Comparaciones de cadenas cadena1 = cadena2! cadena1 es igual a cadena2 cadena1 != cadena2! cadena1
Comparaciones de cadenas
cadena1 = cadena2! cadena1 es igual a cadena2
cadena1 != cadena2! cadena1 no es igual a cadena2
cadena1 < cadena2! cadena1 es menor que cadena2
cadena1 > cadena 2! cadena1 es mayor que cadena 2
-n cadena1!! cadena1 no es igual al valor nulo (longitud
mayor que 0)
-z cadena1!! cadena1 tiene un valor nulo (longitud 0)
Comparaciones Numéricas x -lt y!! ! x menor que y x -le y!! ! x
Comparaciones Numéricas
x
-lt y!!
!
x menor que y
x
-le y!!
!
x menor o igual que y
x
-eq y!!
!
x igual que y
x
-ge y!!
!
x mayor o igual que y
x
-gt y!!
!
x mayor que y
x
-ne y!!
!
x no igual que y
Comparaciones de Atributos y Archivos -d fichero!! fichero existe y es un directorio -e fichero!!
Comparaciones de Atributos y Archivos
-d fichero!! fichero existe y es un directorio
-e fichero!! fichero existe
-f fichero!! fichero existe y es un fichero regular (no un
directorio, u otro tipo de fichero especial)
-r fichero!! Tienes permiso de lectura en fichero
-s fichero!! fichero existe y no esta vacío
-w fichero!! Tienes permiso de escritura en fichero
-x fichero!! Tienes permiso de ejecución en fichero (o de
búsqueda si es un directorio)
IF / ELSE if "condición" then "comandos" [elif "condición" then "comandos"] [else
IF / ELSE
if "condición" then
"comandos"
[elif "condición"
then
"comandos"]
[else
"comandos"]
fi
EJEMPLO IF / ELSE #!/bin/bash ## Comprobando terminación de un comando DIRECTORIO="/tmp/test"
EJEMPLO IF / ELSE
#!/bin/bash
## Comprobando terminación de un comando
DIRECTORIO="/tmp/test"
COMANDO="/bin/mkdir $DIRECTORIO"
if $COMANDO then
echo "$DIRECTORIO ha sido creado"
else
echo "$DIRECTORIO no pudo ser creado"
fi
EJEMPLO IF / ELSE #!/bin/bash # # Comparación de cadenas alfanuméricas # CADENA1="uno"
EJEMPLO IF / ELSE
#!/bin/bash
#
# Comparación de cadenas alfanuméricas
#
CADENA1="uno"
CADENA2="dos"
CADENA3=""
if [ $CADENA1 = $CADENA2 ]; then
echo "\$CADENA1 es igual a \$CADENA2"
elif [ $CADENA1 != $CADENA2 ]; then
echo "\$CADENA1 no es igual a \$CADENA2"
fi
if [ -z $CADENA3 ]; then
echo "\$CADENA3 esta vacía"
fi
EJEMPLO IF / ELSE #!/bin/bash # # Comparación de valores numéricos # let NUM1=1 let
EJEMPLO IF / ELSE
#!/bin/bash
#
# Comparación de valores numéricos
#
let NUM1=1
let NUM2=2
let NUM3=3
if [ $NUM1 -ne $NUM2 ] && [ $NUM1 -ne
$NUM3 ]; then
echo "\$NUM1 es diferente a \$NUM2 y \
$NUM3"
fi
if [ $NUM1 -lt $NUM3 ]; then
echo "\$NUM1 es menor que \$NUM3"
fi
FOR for nombre [in lista] do comandos que pueden utilizar $nombre done
FOR
for nombre [in lista]
do
comandos que pueden utilizar $nombre
done
EJEMPLO FOR #!/bin/bash ##Un ejemplo nos aclarara las cosas. Vamos a ##listar información en el
EJEMPLO FOR
#!/bin/bash
##Un ejemplo nos aclarara las cosas. Vamos a
##listar información en el DNS de una lista de
##direcciones web:
for HOST in www.google.com www.altavista.com
www.yahoo.com
do
echo "-----------------------"
echo “Ingrese el sitio”
read $HOST
echo "-----------------------"
/usr/bin/host $HOST
echo "-----------------------"
done
WHILE while condicion do comandos done
WHILE
while condicion
do
comandos
done
EJEMPLO WHILE #!/bin/bash ##Un ejemplo simple con while en donde escribimos el ##valor de una
EJEMPLO WHILE
#!/bin/bash
##Un ejemplo simple con while en donde escribimos el
##valor de una variable 10 veces, después de incrementar su
##valor:
NUM=0
while [ $NUM -le 10 ]; do
echo "\$NUM: $NUM"
let NUM=$NUM+1
done
UNTIL until condicion; do comandos done
UNTIL
until condicion; do
comandos
done
EJEMPLO UNTIL #!/bin/bash ##Un ejemplo simple con until en donde escribimos el valor de ##una
EJEMPLO UNTIL
#!/bin/bash
##Un ejemplo simple con until en donde escribimos el valor de
##una variable 10 veces,
##despues de incrementar su valor:
NUM=0
until [ $NUM -gt 10 ]; do
echo "\$NUM: $NUM"
let NUM=$NUM+1
done
CASE case expresion in caso_1 ) comandos;; caso_2 ) comandos;; esac
CASE
case expresion in
caso_1 )
comandos;;
caso_2 )
comandos;;
esac
EJEMPLO CASE #!/bin/bash #!/bin/bash for NUM in 0 1 2 3 do case $NUM in
EJEMPLO CASE
#!/bin/bash
#!/bin/bash
for NUM in 0 1 2 3
do
case $NUM in
0)
! echo "\$NUM es igual a cero";;
1)
select OPT in opt_1 opt_2 opt_3
do
if [ $OPT ]; then
echo "Opcion elegida: $OPCION"
break
! echo "\$NUM es igual a uno";;
else
2)
echo "Opcion no valida"
! echo "\$NUM es igual a dos";;
fi
3)
done
! echo "\$NUM es igual a tres";;
esac
done
SELECT select nombre [in lista] do comandos que pueden utilizar $nombre done
SELECT
select nombre [in lista]
do
comandos que pueden utilizar $nombre
done
EJEMPLO SELECT #!/bin/bash select OPT in opt_1 opt_2 opt_3 do if [ $OPT ]; then
EJEMPLO SELECT
#!/bin/bash
select OPT in opt_1 opt_2 opt_3
do
if [ $OPT ]; then
echo "Opcion elegida: $OPCION"
break
else
echo "Opcion no valida"
fi
done