Redescubriendo la programación en BASH

Terminal
Hace unos días me reencontre con un antiguo conocido, el shell scripting. Es una técnica de programación que nos permite ejecutar scripts con intérpretes de comandos como BASH, CSH y otros, cuya principal ventaja es que nos dejan usar comandos de terminal (tipo 'ls', 'mv', 'awk', 'grep',...) de manera que nos permiten hacer cosas relativamente complicadas de una manera bastante sencilla. Desconozco si existe scripting para cmd de Windows, hasta ahora solo he programado en sistemas Unix (cualquier distro de Linux, BSD, Mac OS X, etc) bajo intérpretes de comandos como los anteriormente citados.

Realizar un tutorial sobre scripting, de momento con este artículo, no es mi prioridad, quizá realice alguna aportación en futuras entregas puesto que el mundo del shell scripting es bastante jugoso. En este artículo si pondré algún ejemplo sencillito y enlaces a tutoriales que considero buenos.

El ejemplo que utilizaré como introducción a este mundillo, se trata de algo sencillo. Para los que conozcáis el misterioso mundo de los intérpretes de comandos, sabréis que para ejecutar un archivo como script simplemente tenéis que crear un archivo sin extensión o con la extensión '.sh' y en la cabecera es recomendado poner el intérprete a usar, por ejemplo:
#!/bin/bash
Con esta línea, indicaremos que se usará BASH, como intérprete del script.
Una vez guardado el archivo procederemos a darle permiso de ejecución:
$chmod +x nombre_de_nuestro_script
,y para ejecutarlo:
$./nombre_de_nuestro_script
O lo ejecutamos con el comando sh:
$sh nombre_de_nuestro_script
Ahora que ya sabemos la mecánica de ejecución, vamos al código de nuestro script, en este caso vamos a realizar una calculadora bastante simple, solo contendrá: suma, resta, multiplicación y división entera.
Aquí va el código:
#!/bin/bash

while :
do
echo "1.- Sumar"
echo "2.- Restar"
echo "3.- Multiplicar"
echo "4.- Dividir"
echo "(s/S) Salir"
echo -n "Introduzca opcion: "
read OP
clear
case $OP in
1) echo "Resultado: " `expr $1 \+ $2`
echo "";;
2) echo "Resultado: " `expr $1 \- $2`
echo "";;
3) echo "Resultado: " `expr $1 \* $2`
echo "";;
4) echo "Resultado: " `expr $1 \/ $2`
echo "";;
s|S) break;;
esac
done
 Como véis en el código anterior, usamos un bucle while para continuar mostrando el menú, hasta que se pulse 's' o 'S'. Con el comando break rompemos el bucle y salimos del programa. El comando echo nos muestra mensajes y con la primitiva '-n' provocamos que no salte linea a la hora de realizar el read con el que pedimos datos para seleccionar que opción del menú deseamos. Clear limpia la pantalla, dando al programa un aspecto más amigable al usuario. Case es el equivalente a switch en lenguajes de tercer nivel como Java, C, o Python. Con $1 y $2, nos referimos a los parámetros de entrada, es decir, podríamos pedir (como hicimos al pedir la opción), que el usuario introduzca por teclado, mientras el script se está ejecutando, los números con los que se realizarán las opciones, yo os he querido dar una pequeña vista de como funcionan los parámetros y la introducción de términos de las operaciones, se lleva a cabo al ejecutar el script. Me explico, para introducir un parámetro a la hora de ejecutar un script, simplemente al realizar el:
$./nombre_del_script
,o el:
$sh nombre_del_script
solo tendremos que añadir los parámetros al final de la sentencia, separados con espacios, de este modo:
$./nombre_del_script param1 param2
$sh nombre_del_script param1 param2
Para finalizar este artículo, añado un link con el script en un archivo con extension '.sh' y una relación de links con tutoriales interesantes.

Calculadora.sh

Tutoriales:

-Para principiantes (está en inglés, pero es facilmente entendible): link
-Algo mas avanzado (también en inglés): link

1 comentario:

  1. Me alegra encontrar convencidos del bash como yo. Si además de esto tu sc cript lo integras con dialog te queda genial!

    http://www.linuxjournal.com/article/2807

    ResponderEliminar