Tema 3 / 11
RHCSA Objetivo 3

Crear scripts de shell simples

Automatización básica y lógica de programación con Bash

🎬
VER VIDEO YOUTUBE - CLASE 3 Tutorial completo de scripting y automatización

1. Ejecutar código condicionalmente (if,test,[]...)

Los scripts de shell permiten ejecutar comandos de forma automática. El control condicional se realiza principalmente con if, test y los corchetes de evaluación.

El shebang (#!) indica qué intérprete ejecutará el script (#!/bin/bash), usando luego comandos como read para guardar datos, echo para mostrar resultados.

Script basico

Debemos recordar que siempre que editemos un archivo para crear un script habrá que darle permisos de ejecución con chmod +x nombre-script.

resultado script basico

Operadores lógicos de archivos:

  • -e : Existe archivo/dir
  • -f : Es archivo regular
  • -d : Es un directorio
  • -r/w/x : Permisos r, w o x

Comparación de cadenas y números:

  • Cadenas: -z (vacía), -n (no vacía), = (igual), != (distinta).
  • Números: -eq (==), -ne (!=), -lt (<), -gt (>), -ge (>=).

En Bash, los espacios dentro de [ ] son obligatorios: [ "$num" -eq 5 ] es correcto, mientras que ["$num"-eq5] fallará.

Script con operadores Resultado operadores

Condiciones compuestas y [[ ]]:

En el scripting moderno se utilizan los dobles corchetes [[ ]] por ser más seguros. Soportan operadores estándar:

  • && (AND), || (OR), ! (NOT), == (Igualdad), != (Desigualdad).
Script condicional compuesto Resultado condicional compuesto

También disponemos de case para múltiples opciones de forma más limpia:

Sintaxis de case

2. Uso de bucles para procesar archivos y entradas

Bucle for: Ideal para iterar sobre una lista conocida de elementos, archivos o salidas de comandos.

Ejemplo bucle for Resultado bucle for

Bucle while: Ideal para lecturas línea a línea (con read) o contadores. Podemos usar IFS para definir separadores en archivos como CSV.

Ejemplo bucle while Resultado bucle while

Usamos for cuando conocemos los elementos a recorrer, while mientras una condición sea verdadera y until mientras sea falsa.

3. Procesar entradas de scripts

Los scripts pueden recibir argumentos desde la línea de comandos. Estos son los tipos principales:

  • $0 → Nombre del script.
  • $1, $2... → Argumentos posicionales individuales.
  • $# → Número total de argumentos recibidos.
  • $@ → Lista de todos los argumentos.
  • $? → Estado de salida del último comando (0 = éxito).
  • $? → Estado del script
Uso de argumentos Resultado de argumentos

Podemos forzar la finalización de un script con un código de error específico usando exit 1.

4. Procesar la salida de comandos dentro de un script

La salida de comandos puede almacenarse en variables usando la sintaxis $(comando).

Esto permite capturar información del sistema para procesarla más tarde o redirigirla, combinándola con lo aprendido en la Clase 1 sobre redirecciones de flujo.

Procesando y redirigiendo Resultado redirección en script
💡 CONSEJO : La mayoría de errores en scripts vienen de fallos de sintaxis: falta de espacios en los corchetes, no dar permisos de ejecución o usar rutas relativas en lugar de absolutas.