Vous êtes sur la page 1sur 5

Comparaciones de cadenas alfanumericas

Operador Verdad (TRUE) si: -----------------------------------------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 mayorque 0) -z cadena1 cadena1 tiene un valor nulo (longitud 0)

Comparacion de valores numericos


Operador Verdad (TRUE) si: -----------------------------------------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

Comprobacion de atributos de fichero


Operador Verdad (TRUE) si: ------------------------------------------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 -s fichero -w fichero -x fichero busqueda -O fichero -G fichero fichero1 -nt fichero2 fichero1 -ot fichero2 Tienes permiso fichero existe Tienes permiso Tienes permiso de lectura en fichero y no esta vacio de escritura en fichero de ejecucion en fichero (o de

si es un directorio) Eres el dueo del fichero El grupo del fichero es igual al tuyo. fichero1 es mas reciente que fichero2 fichero1 es mas antiguo que fichero2

Podemos combinar varias condiciones con los simbolos '&&' (AND) y '||' (OR), y negar una condicion con '!'. Unos ejemplos mas adelante aclararan como utilizarlos.

if/else
La sintaxis de esta construccion es la siguiente:

if "condicion" then

"comandos" [elif "condicion" then "comandos"] [else "comandos"] fi


Como ya hemos dicho, podemos comprobar los valores de terminacion de un comando, y comparar cadenas alfanumericas/numericas y atributos de ficheros. Nada mejor que unos ejemplos para aclararnos las ideas.

#!/bin/bash # # Comprobando terminacion 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 #!/bin/bash # # Comparacion de cadenas alfanumericas # 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 vacia" fi #!/bin/bash # # Comparacion de valores numericos # 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
La sintaxis de esta construccion es la siguiente:

for nombre [in lista] do comandos que pueden utilizar $nombre done
Un ejemplo nos aclarara las cosas. Vamos a listar informacion en el DNS de una lista de direcciones web:

#!/bin/bash for HOST in www.google.com www.altavista.com www.yahoo.com do echo "-----------------------" echo $HOST echo "-----------------------" /usr/bin/host $HOST echo "-----------------------" done

while
La sintaxis de esta construccion es la siguiente:

while condicion do comandos done


Un ejemplo simple con while en donde escribimos el valor de una variable 10 veces, despues de incrementar su valor:

#!/bin/bash

NUM=0 while [ $NUM -le 10 ]; do echo "\$NUM: $NUM" let NUM=$NUM+1 done

until
La sintaxis de esta construccion es la siguiente:

until condicion; do comandos done


Un ejemplo simple con until en donde escribimos el valor de una variable 10 veces, despues de incrementar su valor:

#!/bin/bash NUM=0 until [ $NUM -gt 10 ]; do echo "\$NUM: $NUM" let NUM=$NUM+1 done

case
La sintaxis de esta construccion es la siguiente:

case expresion in caso_1 ) comandos;; caso_2 ) comandos;; ...... esac


Un ejemplo simple con case para aclarar las cosas:

#!/bin/bash for NUM in 0 1 2 3 do case $NUM in 0) echo "\$NUM es igual a cero";; 1)

echo "\$NUM es igual a uno";; 2) echo "\$NUM es igual a dos";; 3) echo "\$NUM es igual a tres";; esac done

select
La sintaxis de esta construccion es la siguiente:

select nombre [in lista] do comandos que pueden utilizar $nombre done
Un ejemplo simple para aclarar las cosas.

#!/bin/bash select OPCION in opcion_1 opcion_2 opcion_3 do if [ $OPCION ]; then echo "Opcion elegida: $OPCION" break else echo "Opcion no valida" fi done
Bueno esto es todo por hoy en nuestra introduccion a Bash. En el proximo articulo de esta serie veremos diferentes aspectos de la entrada y salida de datos en un script Bash.

Libros recomendados sobre el tema (solo en ingles), para profundizar y tener a mano todos los detalles:

Classic Shell Scripting

Vous aimerez peut-être aussi