Variables en Bash Scripting (Parte I)

10 Abr

Segunda publicación del curso de Bash Scripting.

Debido al cansancio físico dejado por el FLISOL el día de ayer, esta esperada publicación se ha retrasado un poco, pues la idea siempre ha sido realizar la publicación durante la mañana. Esperemos que sea posible del próximo domingo en adelante.

Las variables son un nombre para un espacio de memoria reservado; los lenguajes de programación y los scripts hacen uso de las variables para representar los datos con los cuales trabajan. En Bash las variables no son fuertemente tipadas, o lo que es lo mismo, Bash usa tipado dinámico, lo que significa que una variable puede tomar valores de distinto tipo en cualquier momento.

Bash diferencia entre letras mayúsculas y minúsculas al momento de reconocer una variable, por lo que para nombrar variables podemos usar caracteres alfanuméricos y underline (_), sin embargo el nombre de una variable no puede comenzar con un dígito, esto debido a que las variables $0 a $9 tienen un significado especial y también se debe a la forma en la que se concatenan strings.

Una variable está precedida del símbolo $ excepto cuando se declara:

Se pueden comentar líneas haciendo uso del caracter especial #, la única línea que contiene este caracter y que no corresponde a un comentario es la primera.

null   
#!/bin/bash
 
# La siguiente variable contiene una cadena.
var="Hola"
 
echo $var

La salida del anterior script sería sencillamente:

Hola

Alrededor del caracter de asignación no pueden haber espacios, si tuvieramos:

null   
#!/bin/bash
 
# La siguiente variable contiene una cadena.
var = "Hola"
 
echo $var

Obtendríamos el siguiente error:

variables.bash: línea 4: var: orden no encontrada

Debido a que no pueden usarse espacios al momento de realizar asignaciones, el nombre de un comando puede usarse como nombre para una variable, esto no es para nada recomendable. ¿Qué sucedería si al asignar a una variable, cuyo nombre es un comando, se deja un espacio antes del “=”?

Para ver cómo pueden hacerse operaciones matemáticas en Bash, veamos lo siguiente:

null   
#!/bin/bash
 
echo "Asignación de Variable Numérica"
_a=1
echo -e "Valor de _a:" $_a"\n"
 
echo "Incremento en 1"
let _a+=1
echo "Se ejecuta: let _a+=1"
echo -e "Valor de _a:" $_a"\n"
 
echo "No es un incremento"
_a+=1
echo "Se ejecuta: _a+=1"
echo -e "Valor de _a:" $_a"\n"
 
echo "Otra forma de incrementar"
_a=$[$_a + 1]
echo "Se ejecuta: _a=\$[\$_a + 1]"
echo -e "Valor de _a:" $_a"\n"
 
echo "Siguiendo con el uso de let"
let _a=$_a+1 # Sin espacios
echo "Se ejecuta: _a=\$_a+1"
echo -e "Valor de _a:" $_a"\n"
 
let "_a += 1" # Permite el uso de espacios
echo 'Se ejecuta: let "_a += 1"'
echo "Valor de _a:" $_a

Al correr el script obtenemos:


Asignación de Variable Numérica
Valor de _a: 1

Incremento en 1

Se ejecuta: let _a+=1
Valor de _a: 2

No es un incremento
Se ejecuta: _a+=1
Valor de _a: 21

Otra forma de incrementar
Se ejecuta: _a=$[$_a + 1]
Valor de _a: 22

Siguiendo con el uso de let
Se ejecuta: _a=$_a+1
Valor de _a: 23

Se ejecuta: let “_a += 1”
Valor de _a: 24


Del anterior script podemos aprender varias cosas:

  • Los nombres de las variables pueden comenzar con underline.
  • Podemos hacer uso de la palabra reservada let para realizar asignaciones.
  • Con let podemos hacer uso de comillas dobles para usar espacios en asignaciones.
  • Para concatenar cadenas, basta colocarlas una al lado de la otra.
  • Para imprimir caracteres especiales como $, se debe utilizar backslash.
  • Para imprimir un espacio con echo puede colocarse dentro o fuera de comillas.
  • Puede usarse comillas simples o dobles para imprimir texto con el comando echo.
Tener ‘let var+=1’ es equivalente a ‘let var=$var+1’ cuando se trata de una variable numérica. Cuando se trata de una variable de cadena, ‘var+=1’ es equivalente a ‘var=$var”1″‘.
Al imprimir comillas dobles al mismo tiempo que se usan las mismas con echo, debe usarse el caracter de escape backslash (\). Ejemplo: echo “Use: \”a = $a + 1\”.”

Por hoy dejaremos aquí, en la próxima publicación se mostrará otras formas de realizar operaciones aritméticas y se hará mención de algunas variables especiales para los scripts.

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

Un comentario a “Variables en Bash Scripting (Parte I)”

  1. Daniel1952 22 noviembre, 2016 at 12:02 #

    Hola, muy bueno el aporte, recien está comenzando con bash, espero que continúes con los Ejs. de código.

    Un abrazo desde Argentina-Santa Fe-Arequito

Deja un comentario