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 variableA
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 predefinidasEn 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.