Variables en Bash Scripting (Parte II)

17 Abr

Tercera publicación del curso de Bash Scripting.

Siguiendo con el estudio de las variables en Bash, veamos a continuación algunos ejemplos de operaciones matemáticas sin usar let:

null   
#!/bin/bash
 
a=2
b=3
 
c=$[$a+$b]
echo "a + b = "$c
 
c=$[$a-$b]
echo "a - b = "$c
 
c=$[ $a % $b ] # Módulo
echo "a % b = "$c
 
c=$(( $a * $b ))
echo "a * b = "$c
 
c=$(($a/$b)) # División entera
echo "a / b = "$c
 
c=$(($a**$b)) # Potencia
echo "a ** b = "$c

A partir de la salida del anterior script podemos observar que el uso de espacios es posible cuando utilizamos $(()) y $[] para realizar las operaciones.

Si fuese necesario trabajar con números con coma flotante, podemos usar la utlidad “bc”.

A continuación veamos algunas variables especiales o predefinidas en Bash Scripting:

Al llamar un script de Bash, resulta muchas veces necesario y útil pasarle argumentos debido a la naturaleza de dicho script. Supongamos que tenemos un script que procesa un archivo, podemos definir una variable para que guarde el nombre del archivo y trabajar con dicha variable, pero si el nombre del archivo cambia o se quiere procesar un nuevo archivo, hay que entrar a modificar el script, lo que no es malo, pero la idea de los scripts de Bash es hacer las tareas administrativas mucho más fáciles, y tener que editar un script cada vez que se va a usar no es sinónimo de facililidad. Para llamar un script con argumentos los escribimos después del nombre del script separados por un espacio, en el caso de un argumento escribiríamos:

null   
./miscript.bash argumento1

Entonces una pregunta natural es ¿De qué forma puedo obtener “argumento1” dentro del script?. Para obtener los argumentos se utilizan las variables cuyos nombres son los números, es decir, $1, $2, $3, $4, $5, $6, $7, $8 y $9. En el caso de la llamada anterior, la variable $1 guarda “argumento1”; la variable $0 guarda el nombre del script y si tuviéramos más de nueve argumentos podemos usar las variables de números con dos dígitos, pero en ese caso debemos encerrar entre llaves: $, $, etc.

null   
#!/bin/bash
 
echo "Nombre del Programa" $0
echo "Argumento 01" $1
echo "Argumento 02" $2
echo "Argumento 03" $3
echo "Argumento 04" $4
echo "Argumento 05" $5
echo "Argumento 06" $6
echo "Argumento 07" $7
echo "Argumento 08" $8
echo "Argumento 09" $9
echo "Argumento 10" $
null   
./var_args.bash arg1 arg2 arg3 arg4 arg5 arg6 arg7 arg8 arg9 arg10

Cuando tenemos un gran número de argumentos, resulta complicado manejar uno por uno, mucho más si no tenemos idea de cuántos argumentos vamos a pasar finalmente. Para solucionar este problema aparece la variable $* o $@ que guarda todos los argumentos pasados al script, la forma de procesar esta variable es por medio de un bucle, entonces volveremos sobre dicha variable en ese punto; tenemos disponible también la variable $# que guarda el número de argumentos pasados al script.

Si usamos una variable que no contiene ningún valor, se usa NULL y no se genera ningún error. Al sumar a una variable nula se obtiene como si se hubiera sumado a cero, de la misma forma si se concatena a una variable nula, es como si se hiciera con una cadena vacía.

Otras variables predefinidas son $$ y $?, la primera variable corresponde al Process ID o PID del script, la segunda corresponde al valor retornado por el script, dependiendo de si se ha ejecutado correctamente o se han presentado errores.

null   
#!/bin/bash
 
echo "Script con PID" $$
echo "Este script se ha ejecutado con éxito:" $?
 
exit $?

Conclusion.

En esta ocasión se han mostrado algunas facilidades que proveen las variables, en este caso no hay ejemplos profundos pues las variables por si solas no ofrecen dinámica al script, definiendo dinámica como interoperabilidad con el resto del sistema y con el usuario. Aún falta hablar un poco más sobre variables, para la próxima publicación escribiremos acerca de Variables Locales, Variables de Entorno y Variables Internas con lo que se concluiría esta sección.

Acerca del autor

Christian Gutierrez ha escrito 22 publicaciones en este blog.

Theory is when you know something, but it doesn't work. Practice is when something works, but you don't know why. Programmers combine theory and practice: Nothing works and they don't know why. – Anonymous Developer

No hay comentarios aún.

Deja un comentario