Você está na página 1de 18

Programacin Linux

bash - Estructuras de control y bucles.

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! ! mayor que 0) -z cadena1! ! cadena1 no es igual al valor nulo (longitud

cadena1 tiene un valor nulo (longitud 0)

Comparaciones Numricas
x -lt y! ! x -le y! ! x -eq y! ! x -ge y! ! x -gt y! ! x -ne y! ! ! ! ! ! ! ! x menor que y x menor o igual que y x igual que y x mayor o igual que y x mayor que y x no igual que y

Comparaciones de Atributos y Archivos


-d fichero! ! -e fichero! ! fichero existe y es un directorio fichero existe -f fichero! ! fichero existe y es un fichero regular (no un directorio, u otro tipo de fichero especial) -r fichero! ! -s fichero! ! -w fichero! ! Tienes permiso de lectura en fichero fichero existe y no esta vaco Tienes permiso de escritura en fichero

-x fichero! ! Tienes permiso de ejecucin en fichero (o de bsqueda si es un directorio)

IF / ELSE
if "condicin" then "comandos" [elif "condicin" then "comandos"] [else "comandos"] fi

EJEMPLO IF / ELSE
#!/bin/bash ## Comprobando terminacin 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 # # Comparacin de cadenas alfanumricas # 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 vaca" fi

EJEMPLO IF / ELSE
#!/bin/bash # # Comparacin de valores numricos # 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

EJEMPLO FOR
#!/bin/bash ##Un ejemplo nos aclarara las cosas. Vamos a ##listar informacin 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

EJEMPLO WHILE
#!/bin/bash ##Un ejemplo simple con while en donde escribimos el ##valor de una variable 10 veces, despus 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

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

EJEMPLO CASE
#!/bin/bash for NUM in 0 1 2 do case $NUM in 0) ! echo "\$NUM 1) ! echo "\$NUM 2) ! echo "\$NUM 3) ! echo "\$NUM esac done 3 #!/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 es igual a cero";; es igual a uno";; es igual a dos";; es igual a tres";;

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 echo "Opcion elegida: $OPCION" break else echo "Opcion no valida" fi done

Você também pode gostar