En este artículo vamos a ver algunas de las características de Bash que le permiten funcionar como un lenguaje de programación. Cabe decir que Bash no es un lenguaje de propósito general sino más bien orientado a la administración de sistemas y automatización de tareas.

Variables

Una variable es un identificador que almacena cierto valor, veamos como definir algunas.

$ nombre=“Anonymous”
$ declare -i edad=20+3  //Variables de tipo entero 
$ idiomas=(español ingles latin hebreo chino)

Las reglas para nombrar variables son las mismas que en la mayoría de los lenguajes: letras, guion bajo, números, el nombre no debe iniciar con número. Para recuperar el valor de una variable anteponga un $ al nombre de la variable.

$ echo “Mi nombre es $nombre y tengo $edad años y hablo ${idiomas[@]}”

Variables predefinidas

Bash define algunas variables por defecto, muy útiles cuando trabajamos con scripts.

  • $#  //Número de argumentos pasados a un comando.
  • $?  //Valor de salida del último comando.
  • $$  //Número de proceso del shell.
  • $0  //Nombre del comando que se esta ejecutando.
  • $n  //Valores de los argumentos. $1 es el  primer parámetro, $2 el segundo parámetro, etc.
  • “$*” //Todos los argumentos como una cadena (“$1 $2 …”).
  • “$@” //Todos los argumentos entre comillas dobles de forma individual.

Arreglos

Bash provee dos tipos de arreglos, basados en índices (los índices son números) y asociativos (los índices son cadenas).

$ idiomas=(español ingles latín hebreo chino)

$ echo ${idiomas[0]} español

$ echo ${idiomas[1]} ingles

$ declare -A P=( [mexico]=52 [bolivia]=591 [canada]=11 )

$ echo ${P[mexico]}

52

Operaciones sobre arreglos:

${arreglo[i]} Valor en el índice i

${arreglo[*]} Todos los elementos

${arreglo[@]} Todos los elementos

${#name[*]}   Número de elementos en el arreglo

${#name[@]}   Número de elementos en el arreglo

Expresiones aritméticas

Las operaciones aritméticas se puede realizar con $(( expresión )).

$ echo $(( (2**10)/2 ))512

$ a=3; b=10;

$ echo $(( a += b ))

$ echo $a
13

Los operadores en su mayoría son los mismos que en C/C++, salvo algunas excepciones, la exponenciación(**), por ejemplo.

Estructuras de Control

Las estructuras de control permiten guiar el flujo de ejecución de un programa. Bash provee if, if … else y if … elif … else.

IF

if  COMANDOS-­DE-­PRUEBA
then
BLOQUE-­DE­-COMANDOS
fi

Ej.

if [ $edad -lt 18 ]
then
   echo “Fuera de aquí. Solo para
adultos.”;
fi

If … else

if   COMANDOS-­DE-­PRUEBA
then
BLOQUE­-DE­-COMANDOS-­1
else
BLOQUE-­DE­-COMANDOS-­2
fi

Ej.

if [ $edad -ge 18 ]
then
    echo “Adelante.”;
else
    echo “Fuera de aquí. Solo para
adultos.”;
fi

If … elif … else

if  COMANDOS-­DE­-PRUEBA
then
BLOQUE-­DE-­COMANDOS-­1
elif  COMANDOS­-DE-­PRUEBA
BLOQUE-­DE­-COMANDOS-­2
fi

Ej.

if [ $edad -ge 18 ]
then
    echo “Adelante.”;
elif [ $influyente ]
    echo “Adelante por favor”;
else
echo “Fuera de aquí. Solo para
adultos.”;
fi

Para las comparaciones he utilizado algunos operadores diferentes a los convencionales, como son

  • lt Menor que.
  • ge Mayor o igual a.

Véase man para más información sobre los operadores de comparación.

Estructuras de repetición

Bash soporta las estructuras while y for para repetición de operaciones. Su sintaxis es la siguiente.

For

for argumento in [lista]
do
comando(s)…
done

Ej.

for i in {1..10}
do
    echo $(( i**2 ));
done

While

while [ condición ]
do
comando(s)…
done

Ej.

while read archivo
do
     rm$archivo“;
done < <(ls -1)

Scripts

Un script no es más que una serie de comandos y operaciones guardadas en un archivo, listos para ser ejecutados por Bash. La estructura de un script es la siguiente.

#!/bin/bash
comando-1;
comando-2;
.
.
comando-n;
exit 0;

La primer línea especifíca con que comando deben ser ejecutados los comandos en el archivo. El contenido de la primera línea es conocido como shebang.

A probar nuestros scripts

Existen básicamente dos formas de ejecutar un script. Invocar bash pasando como argumento el el archivo o dando permisos de ejecución al script, y se ejecuta como cualquier otro comando.

$ bash mi_script.sh               # primera forma
$ chmod +x mi_script.sh              #segunda forma
$ ./mi_script.sh
Conclusión

Bash es una herramienta poderosa y extensa, hablar a profundidad del tema involucraría cientos de páginas y ciertamente no cuento con el conocimiento suficiente. En este articulo solo hemos visto algunas de las características básicas pero que considero suficiente para iniciarse. Además recalcar que lo antes visto es unicamente referente a Bash. Disculpen lo extenso del articulo.

Salu2 Comunidad.