Webmasters, Hacking Ball Z - http://www.hackingballz.com
Variables en BASH
http://www.hackingballz.com/articulos/15/1/Variables-en-BASH/Page1.html
Por Larry Hans Arroyo Vargas
Published on 31.05.08
 

Comentamos sobre el manejo, declaración e invocación de variables en BASH. Además de visualizar las variables predefinidas.


Como todo lenguaje, necesitamos dominar el manejo de las súper útiles variables, que nos permitirán desarrollar un código limpio, y manejar adecuadamente la interacción de los datos. Una variable es una cadena de datos que se almacena en la memoria y que podemos llamar en cualquier momento, durante la ejecución del guion para darle un uso en especifico.

¿Cómo asignar una variable?

En BASH, las variables se asignan simplemente dándoles un nombre, luego definimos su valor asignando un signo de igual (=), y continuando con su contenido, tal y como lo vemos a continuación:

#!/bin/bash

#Declarando una variable
hola=1
Como podemos ver en el código anterior, lo que estamos haciendo es declarar la variable “hola”, y asignarle un valor numérico de 1.

Es importante anotar que la asignación de variables es del tipo “CASE-SENSITIVE” (Sensible a mayúsculas y/o minúsculas), lo que quiere decir que si declaramos 3 variables, como por ejemplo “hola”, “HoLa”, y “holA”, serán interpretadas de manera totalmente independiente, y tendrán su espacio individual en la memoria.
Las variables pueden ser alimentadas con comandos específicos, con datos numéricos, con cadenas de texto, y/o una mezcla de ellos, sin necesidad de seguir ningún otro lineamiento en especial.

¿Cómo invocar una variable previamente declarada y llevarla a la pantalla?

Y claro, sabemos asignar una variable, pero de poco nos sirve si no podemos llamarla. En BASH, las variables las invocamos simplemente anteponiendo un símbolo de dólar ( $ ) antes del nombre de la variable, como se determina en el ejemplo a continuación:

#!/bin/bash

#Declarando una variable
hola=1

#Imprimiendo el contenido almacenado en la variable
echo $hola

Haciendo el análisis del script en BASH, podemos observar que las variables simplemente se reemplazan por su valor almacenado.
En la última línea del código iniciamos el comando echo, que nos brinda salida a pantalla, y adicionalmente indicamos con el signo de dólar, que lo que se va a imprimir es el contenido de dicha variable.

Asignación de comandos a una variable

A continuación les presentamos un ejemplo que nos permitirá conocer la hora actual del sistema, almacenándolo previamente en una variable:
#!/bin/bash

FECHA=$(date)

echo Hora:;
echo $FECHA
Nuevamente en la primera línea definimos el interprete BASH (que ha de ejecutar nuestro script).

En la línea dos definimos en mayúsculas (para efectos de más fácil visualización) la variable FECHA, donde almacenamos en la memoria el valor actual de “date”.

Posteriormente en la línea tres añadimos el texto que presentara a la línea final, donde imprimimos en pantalla el valor almacenado de la variable FECHA.

Luego, al momento de ejecutarlo obtendremos algo como lo siguiente:

[root@ns01 bash]# sh hola.sh
Hora:
Sat Mar 15 09:56:41 CDT 2008
[root@ns01 bash]#

Con este lenguaje es sencillo enamorarse ;-)

Es importante anotar en nuestras cabezas que el texto se ha imprimido con un salto de línea, mismo que podemos definir con el punto y coma (;), o bien con un simple salto de línea mediante la tecla de entrar.

Debemos recordar que si tenemos comandos muy extensos, que deseamos distribuir en varias líneas podemos usar la contra barra (\) para evitar que el BASH interprete la continuación como una nueva línea.

Cuadros de variables predefinidas

En diferentes circunstancias necesitaremos conocer de la disposición de las variables predefinidas, mismas que no son muchas además…

 $$ Devuelve el número identificador del proceso del Shell.
 $?  Resultado de la ejecución del comando anterior.
$0 Nombre del script que se está ejecutando.
$1-$9 Devuelve del primer al noveno argumento con los argumentos que fue invocado el script.
$* Muestra todos los argumentos como única palabra con separador _.
$@ Crea y devuelve un Array con todos los argumentos pero con posición.
$# Número de argumentos recibidos.

Aunque esta parte puede resultar un poco confusa en este momento, no deben de preocuparse, todo lo ampliaremos cuando juguemos con los argumentos y expliquemos un poco más la interacción con el usuario al mando.