Principios de bash scripting
...
Introducción
Un script de bash es un archivo de texto con una secuencia de comandos que se ejecutan de forma automática. Permite automatizar tareas repetitivas, gestionar usuarios, hacer copias de seguridad, etc.
Estructura básica de un script
Todo script comienza con el shebang, que indica qué intérprete usar.
#!/bin/bash
echo "Hola, mundo"
Para ejecutarlo:
$ chmod +x script.sh
$ ./script.sh
Variables
#!/bin/bash
NOMBRE="Juan"
echo "Hola, $NOMBRE"
- No se usa espacio alrededor del
= - Para usar la variable se antepone
$ $1, $2...→ argumentos pasados al script$#→ número de argumentos$0→ nombre del script
Condicionales
#!/bin/bash
if [ "$1" = "root" ]; then
echo "Eres root"
elif [ "$1" = "admin" ]; then
echo "Eres admin"
else
echo "Usuario normal"
fi
Operadores de comparación comunes:
-eq→ igual (numérico)-ne→ distinto (numérico)-lt→ menor que-gt→ mayor que=→ igual (cadena de texto)!=→ distinto (cadena de texto)-f→ es un fichero-d→ es un directorio-z→ cadena vacía
Bucles
Bucle for:
#!/bin/bash
for i in 1 2 3 4 5; do
echo "Iteración $i"
done
Bucle while:
#!/bin/bash
CONTADOR=0
while [ $CONTADOR -lt 5 ]; do
echo "Contador: $CONTADOR"
CONTADOR=$((CONTADOR + 1))
done
Funciones
#!/bin/bash
saludar() {
echo "Hola, $1"
}
saludar "Juan"
saludar "Ana"
Las funciones se definen antes de ser llamadas y reciben argumentos igual que el script ($1, $2...).
Ejemplo práctico
Script que crea un usuario y le asigna contraseña:
#!/bin/bash
USUARIO=$1
PASSWORD=$2
if [ -z "$USUARIO" ] || [ -z "$PASSWORD" ]; then
echo "Uso: $0 usuario contraseña"
exit 1
fi
useradd -m "$USUARIO"
echo "$USUARIO:$PASSWORD" | chpasswd
echo "Usuario $USUARIO creado correctamente"
Se ejecutaría así:
# ./crear_usuario.sh juan MiPassword123