Bash Scripting: Variables

Si la semana anterior hicimos nuestro primer "hola mundo" con bash, esta semana ya empezamos a ponernos más serios y vamos a hablar de las variables. Como definirlas y utilizarlas. Empezamos como no puede ser de otra forma viendo un poco de teoría.


Según el tipo de lenguaje, las variables tienen diferentes características, pero lo que las caracteriza es que se le pueden asignar datos y luego recuperarlos. En el caso de bash, las variables no tienen tipos definidos como ocurre en C o Java, por ejemplo.

Lo siguiente que debemos saber de las variables es como crearlas, darles valor y como recuperar ese valor. También aquí es diferente de otros lenguajes, no debemos hacer una definición rigurosa de la variable, simplemente seleccionamos un nombre y le damos un valor. Veamos un ejemplo:


miVar = "Hello world"


Simple y rapido. En este caso miVar ya tiene asignado el valor. No hace falta definirla ni indicar que es un String.

Ahora vamos a ver como recuperarla, en este caso hay que anteponer el simbolo del $ al nombre de la variable. Veamoslo:


echo $miVar


También muy simple. En este caso hacemos un echo de la variable. Ahora abriremos un terminal para crear un archivo llamado vars.sh con el comando gedit. Recordad que en el artículo introductorio vimos como crearlo y darle permisos de ejecución.


#!/bin/bash         
miVar="Hello world"
echo $miVar


Y ahora si finalmente lo ejecutáis, veréis como saca por pantalla el mensaje que asignamos a la variable.

Si lo que queremos es ejecutar una instrucción como puede ser ls y obtener su resultado por pantalla, simplemente debemos utilizar $ y encerrar la instrucción entre parentesis. Si modificais en el ejemplo anterior la asignación del texto por la instrucción que os comantaba, quedaría algo así:


miVar = $(ls)


O incluso podeis utilizar parámetros, así:


miVar = $(ls -ali)


Si ejecutáis ahora el script, veréis que el resultado por pantalla es el resultado del comando ls.

Por último nos queda ver el alcance de nuestras propiedades, con la utilización del argumento local podemos definir variables a nivel local. Veamos un ejemplo.


#!/bin/bash         
miVar="Hola"

function miFunction {
 local miVar="mundo"
 echo $miVar
}

echo $miVar
miFunction
echo $miVar


Hemos modificado un poco nuestro "hola mundo" y hemos creado una función. Si, una función, de momento es muy simple, pero ya volveremos más adelante para hablar del tema. Ahora nos sirve en este ejemplo para ver como anteponiendo la palabra local cuando definimos el valor de miVar esta se convierte en una variable local dentro de nuestra función.

Al final sacamos por pantalla primero miVar que está a nivel global, después ejecutamos miFunction que sacará el valor local de la variable y por último volvemos a sacar el valor global de miVar. Ejecutarlo y vereis el resultado.

Por último, podéis quitar la palabra local del ejemplo anterior y veréis que a la variable global miVar se le reasigna su valor dentro de la función. Volvéis a ejecutarlo y veréis la diferencia.

Comments are closed.