¿Qué es Bash?

Bash es el acrónimo de “bourne-again shell” y es un shell, es decir, un macroprocesador de comandos de Linux (Unix). Macroprocesador significa que permite crear expresiones complejas que aumentan la funcionalidad de la línea de comandos.

¿Qué es un shell script?

Un shell script es un archivo que indica el shell a usar, en este caso bash (#!/bin/bash) y los comandos que se van a ejecutar

Ejemplo de shell script:

script1.sh
#!/bin/bash

# Copiar lista de archivos de la carpeta del usuario
# y copiarlos en un archivo de texto
ls $HOME >> archivo.txt

Para ejecutar el archivo se cambian los permisos

chmod u+x script1.sh
./script.sh

Si se utiliza bash o un punto . no es necesario cambiar los permisos:

bash script.sh

. script1.sh

Cálculos aritméticos en bash

Para operaciones aritméticas se pueden usar los comandos expr y $(( )):

# Suma:
echo `expr 5 + 2`
echo $((5 + 2))

# Multiplicación:
echo `expr 15 \* 3` # Hay que escapar el símbolo *
echo $((15 * 3))

# Potenciación:
echo $((2 ** 3))

# División:
echo `expr 10 / 5`
echo $((10 / 5))

# Módulo:
echo `expr 10 % 5`
echo $((10 % 5))

Leer el input del usuario con read:

#!/bin/bash

# Sumar dos valores sumistrados por el usuario:
echo "Ingresa dos números: "
read x y
suma = $((x + y))

echo "La suma es: $suma"

Variables de entorno y bash

En los scripts bash se pueden manipular, crear e invocar variables de entorno:

#!/bin/bash

# Crear una variable:
export MYVAR="hello"

# Invocar una variable:
echo $HOME
echo $SHELL
echo $LOGNAME

# Usar sustitución de comandos (acento grave):
export HOY=`date`
echo "Hoy es $HOY"

Leer archivos

Dado el siguiente archivo de texto:

# Archivo paises.txt
Chile Santiago
Perú Lima
Ecuador Quito
Rusia Moscú
Francia Paris

Para leer el archivo línea por línea usamos el siguiente script:

#!/bin/bash
ARCHIVO=paises.txt

while read -r PAIS CIUDAD;do
  echo "$CIUDAD es la capital de $PAIS"
done < $ARCHIVO

Y el resultado de la ejecución será:

Santiago es la capital de Chile
Lima es la capital de Perú
Quito es la capital de Ecuador
Moscú es la capital de Rusia
Paris es la capital de Francia