Programación en Bash Linux V: Estructuras [case]

Ahora pongamos un poco mas de imaginación; vamos a crearnos un script que reciba un parámetro que me permita personalizar un poco mas mis acciones, y para ello haremos uso de la sentencia case que como bien podemos imaginar actúa de manera idéntica al switch de C (o bien de java).

La forma de acceder al primero parámetro es con $1, así que a programar:

#!/bin/bash
case $1 in
	-l)
		echo ":: Lista de forma detallada"
		ls -l
		;;
	-r)
		echo ":: Lista de forma recursiva"
		ls -R
		;;
esac

Ahora, analicemos el script. Primeramente vemos la linea que indica donde se encuentra el interprete, seguidamente la sentencia case que compara el valor del primer parámetro ($1) con los casos -l y -r.

Podemos percatarnos que dentro del caso -l hay un echo a pantalla, luego el comando ls -l para ver una lista detallada, y al final del caso encontramos ;; (dos punto y coma). Esto indica que el caso a terminado. Lo mismo para el siguiente caso, y para terminar la sentencia, la palabra esac que como es costumbre en bash así terminan (la palabra inversa a la sentencia).

Ejecutándolo (el script se llama script05)

$chmod +x script05
$./script05 -l
:: Lista de forma detallada
total 24
-rwxr-xr-x 1 lesthack lesthack  40 2009-05-30 16:54 script01
-rwxr-xr-x 1 lesthack lesthack  58 2009-05-30 19:28 script01.5
-rwxr-xr-x 1 lesthack lesthack 485 2009-05-31 00:13 script02
-rwxr-xr-x 1 lesthack lesthack 561 2009-05-31 14:53 script03
-rwxr-xr-x 1 lesthack lesthack 327 2009-05-31 16:49 script04
-rwxr-xr-x 1 lesthack lesthack 139 2009-05-31 17:36 script05

$./script05 -r
:: Lista de forma recursiva
.:
script01  script01.5  script02	script03  script04  script05

7 Comments

  1. Posted May 31, 2009 at 4:43 pm | Permalink

    Aquí también es importante mencionar que en las opciones del case podemos usar * como wildcard (o sea que si ponemos “*)” funcionaría como un default: en un switch de c). También puedes usar * como wildcard parcial (o sea que “-l*)” atraparía todas opciones que empiecen con -l). También el orden en que pongas las opciones es el orden en el que se intentarán ejecutar.

  2. Posted May 31, 2009 at 4:50 pm | Permalink

    Tenía que no veía esto, me recordaste a las funciones, a ese tipo de encasillamiento de code.

  3. Posted May 31, 2009 at 9:57 pm | Permalink

    @lhchavez gracias por la aportación, tenia planeado hacer un post para expresiones regulares utilizando wildcards, espero tener tiempo :P

  4. Pastor
    Posted October 18, 2009 at 6:25 am | Permalink

    Guao! que potente son estas instrucciones! Increible…
    Pero tengo una pequeña duda, al ejecutar el script me refleja el contenido de la carpeta HOME, como puedo hacer para que muestre el contenido de mis script anteriores?

  5. Pastor
    Posted October 18, 2009 at 6:27 am | Permalink

    Lo siento, ya vi como se hace. Para la proxima investigo un poco mas antes de preguntar asi. Tremendo post!!!! jeje

  6. Posted October 18, 2009 at 9:47 am | Permalink

    @Pastor, gracias espero sirva de algo :P

  7. Aberrael
    Posted March 13, 2012 at 6:42 pm | Permalink

    Saludos y gracias, esta información me ha sido de mucha utilidad, seguid así.

Post a Comment

Your email is never shared. Required fields are marked *

*
*