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
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.
Tenía que no veía esto, me recordaste a las funciones, a ese tipo de encasillamiento de code.
@lhchavez gracias por la aportación, tenia planeado hacer un post para expresiones regulares utilizando wildcards, espero tener tiempo
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?
Lo siento, ya vi como se hace. Para la proxima investigo un poco mas antes de preguntar asi. Tremendo post!!!! jeje
@Pastor, gracias espero sirva de algo
Saludos y gracias, esta información me ha sido de mucha utilidad, seguid así.