¿Ya dominas lo básico? Un curso estructurado de shell scripting es la vía rápida para dar el salto.
Ver cursos de shell scripting en UdemyEnlace de afiliado. No te cuesta nada extra.
- 01Preparar el entorno (lo que necesitas)
- 02Tu primer guion (echo)
- 03Usar variables
- 04Argumentos de la línea de órdenes ($1, $2 ...)
- 05Condicionales (la sentencia if)
- 06Repetir (el bucle for)
- 07Repetir (el bucle while)
- 08Escribir tu propia función
- 09Trabajar con arrays
- 10Sustitución de comandos ($())
- 11Trabajar con texto (expansión de parámetros)
- 12Leer de la entrada estándar (read)
- 13Estado de salida y && / ||
- 14Tuberías y redirección
- 15La sentencia case
- 16Aritmética ($(( )))
- 17Lo básico de grep, sed y awk
- 18Comprobación de argumentos y manejo de errores
- 19Valores devueltos por funciones y códigos de salida
- 20[Proyecto] Construye un contador de registros
Comprobación de argumentos y manejo de errores
En esta lección harás que el guion se detenga con un mensaje claro cuando le falte información.
$# contiene cuántos argumentos se recibieron. El operador >&2 manda el mensaje a la salida de error en lugar de a la salida normal, y exit 1 termina el guion indicando que algo falló.
El código de ejemplo comprueba que hay argumentos y avisa cuando no los hay.
Ese >&2 parece un adorno y no lo es. Los mensajes de error tienen que ir por un canal distinto para que, cuando alguien haga ./guion.sh > resultado.txt, los errores sigan viéndose en pantalla en lugar de colarse en el archivo de resultados. Es la diferencia entre un guion que se puede encadenar con otros y uno que no.
La comprobación de argumentos al principio es de esas costumbres que ahorran incidentes serios. Un guion que hace rm -rf "$1/tmp" sin comprobar nada, lanzado sin argumento, ejecuta rm -rf "/tmp". Tres líneas de comprobación al principio evitan ese tipo de historia.
🧪 Este sitio no puede compilar ni ejecutar Shell Script directamente, así que comprueba al instante si lo que escribiste coincide con el código de referencia (la corrección ocurre por completo en tu navegador; no se envía nada a ningún servidor).
