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
} 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.
Saludos a todos