Hola a todos, hoy os voy a explicar como usar las estructuras condicionales en Shellscript.
Las estructuras condicionales son fundamentales en el mundo de la programación y en shellscript no podría ser menos.
Se utilizan para ejecutar acciones cuando la condición es verdadera u otra cuando no se ejecuta.
If básico
Es el if más básico que que veremos, consta de una condición que cuando se cumple ejecuta un trozo de código.
Veamos la sintaxis:
#!/bin/bash if [ <condicion> ] then <codigo> fi
Vemos un típico ejemplo:
#!/bin/bash value1=5 value2=10 if [ $value1 -gt $value2 ] then echo "$value1 es mayor que $value2" fi
Entre los corchetes ponemos la condición que queramos, -gt es >, pero tenemos mas:
Operador | Símbolo |
---|---|
-gt | > (mayor que) |
-ge | >= (mayor o igual que) |
-lt | < (menor que) |
-le | <= (menor o igual que) |
-eq | = (igual) |
-ne | != (distinto) |
Para cadenas o Strings, tenemos algunos operadores más:
Operador | Equivalencia |
---|---|
-n STRING | La longitud del string es mayor que cero |
-z STRING | La longitud del string es cero. |
STRING1 = STRING2 | STRING1 es igual al STRING2 |
STRING1 != STRING2 | STRING1 no es igual al STRING2 |
Si metemos un fichero en la condición, tenemos estos operadores:
Operador | Equivalencia |
---|---|
-d FICHERO | El fichero existe y es un directorio. |
-f FICHERO | El fichero existe y es un fichero. |
-e FICHERO | El fichero existe. |
-r FICHERO | El fichero existe y tiene permisos de lectura. |
-w FICHERO | El fichero existe y tiene permisos de escritura. |
-x FICHERO | El fichero existe y tiene permisos de ejecucción. |
-s FICHERO | El fichero existe y no esta vacio. |
If else
Es igual que el anterior pero añadiendo cuando la condición es falsa que se ejecute un código.
Veamos la sintaxis:
#!/bin/bash if [ <condicion> ] then <codigo> else <codigo> fi
Veamos el ejemplo anterior con un else, por ejemplo:
#!/bin/bash value1=5 value2=10 if [ $value1 -gt $value2 ] then echo "$value1 es mayor que $value2" else echo "$value2 es mayor que $value1" fi
If elif else
Si queremos varias condiciones encadenadas, podemos usar elif, es como un «sino si».
Veamos la sintaxis:
#!/bin/bash if [ <condicion> ] then <codigo> elif [ <condicion> ] <codigo> else <codigo> fi
Veamos un ejemplo adaptando el ejemplo anterior.
#!/bin/bash value1=5 value2=10 if [ $value1 -eq $value2 ] then echo "$value1 es igual a $value2" elif [ $value1 -gt $value2 ] then echo "$value1 es mayor que $value2" else echo "$value2 es mayor que $value1" fi
Case Statements
Case sirve para que en lugar de condiciones, se usan casos, por ejemplo, si valor1 es 1, 2, 3, 4, 5, etc.
Veamos la sintaxis:
case <variable> in <caso 1>) <codigo> ;; <caso 2>) <codigo> ;; esac
Veamos un ejemplo:
#!/bin/bash value1=3 case $value1 in 1) echo "La variable tiene el valor 1" ;; 2) echo "La variable tiene el valor 2" ;; 3) echo "La variable tiene el valor 3" ;; *) echo "$value1 no esta entre 1-3" ;; esac
Espero que os sea de ayuda. Si tenéis dudas, preguntad. Estamos para ayudarte.
Deja una respuesta