Bash: Uso de la estructura de control if-then

Para realizar esta prueba, doy por hecho que ya sabes algunos comandos basicos de la shell y lo basico de ubuntu linux, pero aun asi vamos a realizar esta prueba paso por paso y espero que no te atores con ninguno, empecemos; estando en el escritorio:

  1. Abre una terminal: presiona ALT+F2, escribe gnome-terminal, pulsa ENTER.
  2. Crea un nuevo archivo: escribe touch script4.sh, pulsa ENTER.
  3. Abre el archivo recien creado con el editor nano: escribe nano script4.sh, pulsa ENTER.
  4. Escribe el siguiente codigo: (en el codigo se explica lo que hace cada cosa):
    #!/bin/bash
    #Ejemplo #4: Script que muestra como utilizar la estructura de control if-then
    #Author: Gonzalo Silverio   gonzasilve@gmail.com
    #Archivo: script4.sh
    #Si el nombre juan esta en el archivo nombres.txt 
    #devolvera true. El comando se evalua a falso o verdadero.
    #verdadero =devolvio un resultado, falso = no devolvio nada
     if grep juan nombres.txt
       then
         echo 'El nombre juan ESTA en la lista de nombres'
     fi
    echo
    echo ---------Fin del script.-------------
    
  5. Guarda los cambios: presiona CTRL+O (O, no cero), te pedira el nombre del archivo, pulsa ENTER.
  6. Cierra el editor nano: presiona CTRL+X.
  7. Da permiso de ejecucion al archivo: escribe chmod +x script4.sh, pulsa ENTER.
  8. Ejecuta el script: escribe sh script4.sh

La sentencia if evalua a falso o verdadero la ejecucion de un comando. Observe que la palabra then debe ir en la siguiente linea (no puede ir adelante del comando a evaluarse), por que sino marca error de sintaxis. A continuacion pongo una imagen donde se realizan algunos pasos anteriores y por supuesto; se muestra la ejecucion del script:

Ejecucion 1 del script4 para Bash

Ejecucion 1 del script4 para Bash


Como se puede observar el comando grep informa al usuario que el archivo nombres.txt no existe. Ahora muestro otra imagen:
Ejecucion 2 de script4 para Bash

Ejecucion 2 de script4 para Bash


Como se puede ver en la imagen hemos creado el archivo nombres.txt y le agregue varios nombres (gonza, javier,itzel), pero no el de juan y ejecutamos el archivo y vemos que no entra al if y por tanto no se muestra nada (grep ya no manda msg).

A continuacion le agregamos otros dos nombres (juan y monica) y vemos que ahora si entra al if y muestra la unica instruccion dentro del if (avisa que el nombre juan si esta).

nota 1: Si no tienes nano puedes instalarlo con el comando sudo apt-get install nano
nota 2: Otra forma de ejecutar el script es escribir ./script4.sh
nota 3: Recuerda que todas las lineas del script que empiezan con # (gatito) son comentarios; a excepcion de la primera, asi que puedes omitirlas y no escribirlas.

Bueno eso es todo y pues si tienes dudas, te sirvio el ejemplo o quieres decir algo puedes dejar tu comentario que con gusto lo leere y si es apropiado te contesto. Hasta pronto.

Bash: Uso de la variable $? para depurar scripts de shell.

Para realizar esta prueba, doy por hecho que ya sabes algunos comandos basicos de la shell y lo basico de ubuntu linux, pero aun asi vamos a realizar esta prueba paso por paso y espero que no te atores con ninguno, empecemos; estando en el escritorio:

  1. Abre una terminal: presiona ALT+F2, escribe gnome-terminal, pulsa ENTER.
  2. Crea un nuevo archivo: escribe touch script3.sh, pulsa ENTER.
  3. Abre el archivo recien creado con el editor nano: escribe nano script3.sh, pulsa ENTER.
  4. Escribe el siguiente codigo: (en el codigo se explica lo que hace cada cosa):
    #!/bin/bash
    #Ejemplo #3: Script que muestra como utilizar la variable $? para depurar un programa y
    #            saber si un comando se ejecuto con exito.
    #            Si hubo exito    $?=1
    #            Si NO hubo exito $?=2
    #Author: Gonzalo Silverio -> gonzasilve@gmail.com
    #Archivo: script3.sh
    #Limpiar la consola
    clear
    #Mostrar informacion al usuario
    echo 'A continuacion se buscara una cadena en un archivo'
    echo 'no existente y se mostrara'
    echo 'lo que devolvio la variable $?'
    echo 'Comando: grep donde poema.txt'
    #ejecutar comando grep
    grep donde poema.txt
    #Mostrar el valor de la variable al usuario
    echo $?
    echo
    #Avisar al usuario que se ha terminado de ejecutar el script
    echo ---------Fin del script.-------------
    
  5. Guarda los cambios: presiona CTRL+O (O, no cero), te pedira el nombre del archivo, pulsa ENTER.
  6. Cierra el editor nano: presiona CTRL+X.
  7. Da permiso de ejecucion al archivo: escribe chmod +x script3.sh, pulsa ENTER.
  8. Ejecuta el script: escribe sh script3.sh

La variable $? es una variable de la shell y en ella esta el codigo de retorno del ultimo comando ejecutado. devuelve 1 cuando el comando se ejecuto con exito, en caso contrario (no se ejecuto con exito) devuelve 2. El comando grep busca una cadena dentro de un archivo y muestra todas las lineas que contengan esa cadena. A continuacion pongo una imagen donde se realizan algunos pasos anteriores y por supuesto; se muestra la ejecucion del script:

Ejecucion del scrip3 para Bash.

Ejecucion del scrip3 para Bash.


Como se puede observar el comando grep informa al usuario que el archivo no existe y el 2 que esta en la siguiente linea es el valor de la variable $? (grep no se ejecuto con exito). A continuacion vamos a crear el archivo poema.txt para ver la ejecucion del script nuevamente:
En la terminal de gnome escribe touch poema.txt, pulsa ENTER
Vuelve a ejecutar el script3, en la terminal escribe sh script3.sh, pulsa ENTER. A continuacion te muestro una imagen del terminal y el resultado de la ejecucion:
Ejecucion del script3 para Bash

Ejecucion del script3 para Bash


como vez ahora la variable $? tiene el valor 1 (el comando grep se ejecuto con exito), pues el archivo poema.txt si existe sin embargo como no tiene nada escrito dentro, pues grep no devolvio ninguna linea.

nota 1: Si no tienes nano puedes instalarlo con el comando sudo apt-get install nano
nota 2: Otra forma de ejecutar el script es escribir ./script3.sh
nota 3: Recuerda que todas las lineas del script que empiezan con # (gatito) son comentarios; a excepcion de la primera, asi que puedes omitirlas y no escribirlas.

Bueno eso es todo y pues si tienes dudas, te sirvio el ejemplo o quieres decir algo puedes dejar tu comentario que con gusto lo leere y si es apropiado te contesto. Hasta pronto.