Aprende shell script con ejemplos (II)
En esta entrada vamos a estudiar las sentencias condicionales y sentencias de repetición que podemos utilizar en shell script. Aunque sería bueno que supieses qué es una sentencia de repetición o una sentencia condicional no te preocupes. Intentaré explicártelo de tal manera que puedas entenderlo de una forma sencilla.
1. Sentencias condicionales
Imagina que estás vendiendo entradas de cine. Si te viene alguien hablando en español tu le contestas en español y si te habla en otro idioma tu le contestas en inglés porque imagínate que es el único idioma que conoces además del español.
Eso traducido a órdenes en shell script sería algo parecido a lo siguiente:
if [ habla_en_español]; then contesto_en_español else contesto_en_inglés fi
En realidad contesto_en_español y contesto_en_inglés no existe en shell script pero en vez de eso que me he inventado podríamos preguntar por el valor de alguna variable o preguntar si alguna variable tiene algún valor o es nula, etc.
En shell script existen tres tipos diferentes de sentencias condicionales:
Condicionales
Veamos a continuación algunos ejemplos de sentencias condicionales en shell script:
#!/bin/bash # Este es un ejemplo de if expresión then sentencia if [ "alboran" = "alboran" ]; then echo "Cierto, alboran == alboran" fi
Este es otro ejemplo pero utilizando el patrón if expresión then sentencia1 else sentencia2
#!/bin/bash if [ "alboran" = "alboran" ]; then echo "Cierto, alboran == alboran" else echo “Era falsa” fi
Ten cuidado con los espacios en blanco. Intenta respetar los espacios en blanco en las expresiones porque de lo contrario al ejecutar tu shell script puedes tener problemas.
Veamos otro ejemplo utilizando ahora variables y sentencias condicionales:
#!/bin/bash T1="mar de" T2="alboran" if [ $T1 = $T2 ]; then echo "Cierto, " $T1 " == " $T2 else echo "No es cierto" fi
1. Copia y ejecuta el ejercicio anterior. Comprueba que funciona y modifícalo para que T1 sea igual a T2. Comprueba ahora que dice «Cierto….».
2. Crea un nuevo shell script que diga si el usuario que lo está ejecutando es root o no (recuerda que con el comando «echo $USER» puedo conocer el nombre del usuario actual).
2. Sentencias repetitivas. Los bucles
En shell script hay tres sentencias repetitivas bastante útiles. La sentencias for, while y until. Veamos detenidamente cada una de estas sentencias:
Veamos un ejemplo de la sentencia for:
En este caso se muestran todos los ficheros del directorio desde donde se ejecuta el script anterior. La variable i va tomando como valor uno a uno el nombre de los archivos del directorio actual. Como puedes ver, dentro del for (desde el do hasta el done) se muestra el contenido de la variable i.
Copia y ejecuta el ejercicio anterior. Comprueba que funciona y modifícalo para que muestre otro directorio a tu elección.
Veamos otro ejemplo. El ejemplo anterior no es muy parecido a los bucles for de otros lenguajes como java, C, etc. El siguiente ejemplo sí se asemeja al for de dichos lenguajes:
El comando seq 1 10 genera una secuencia que va del 1 al 10. Si te fijas lo que hará este script es mostrar por pantalla los números del 1 al 10 ambos incluidos.
Copia y ejecuta el ejercicio anterior. Comprueba que funciona y modifícalo para que muestre los números del 5 al 50.
¿Serías capaz de hacer que solamente se muestren los números pares?
Bueno, ya que sabemos cómo funciona el bucle for pasemos a ver cómo funcionan los bucles while y until. Si has entendido el for no te costará nada aprender estos otros. Veamos primeramente cómo funciona el bucle while con un ejemplo:
En este ejemplo tenemos una variable que se llama CONTADOR que al principio vale 0 y luego se va incrementando uno a uno hasta llegar a 10. El resultado de ejecutar el script anterior es el siguiente:
El contador es 1
El contador es 2
El contador es 3
El contador es 4
El contador es 5
El contador es 6
El contador es 7
El contador es 8
El contador es 9
No llega a mostrar el valor 10 porque la condición es CONTADOR -lt 10 (lt es less than). Ya veremos más adelante cómo funcionan las condiciones.
Veamos ahora un ejemplo con until:
Ejemplo del until
El resultado de ejecutar el script anterior es el siguiente:
CONTADOR: 19
CONTADOR: 18
CONTADOR: 17
CONTADOR: 16
CONTADOR: 15
CONTADOR: 14
CONTADOR: 13
CONTADOR: 12
CONTADOR: 11
CONTADOR: 10
1. Realiza un script que muestre los números pares del 0 al 100 con while.
2. Realiza el mismo ejercicio de forma descendente pero utilizando until.
Si te ha gustado este post o lo has encontrado interesante no dejes de continuar aprendiendo shell script en la tercera entrega.
One thought on “Aprende shell script con ejemplos (II)”