¿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
Argumentos de la línea de órdenes ($1, $2 ...)
En esta lección recibirás valores desde fuera, al lanzar el guion.
Los argumentos llegan como $1, $2 y así sucesivamente. $0 es el nombre del propio guion, $# cuántos argumentos hay y $@ todos ellos.
Como en esta página no se ejecuta nada de verdad, el ejemplo asigna los valores a mano para que veas el resultado que produciría al llamarlo con dos argumentos.
El error clásico es no comprobar que los argumentos existen. Si el guion espera $1 y no se lo pasas, la variable queda vacía y el guion sigue adelante con una cadena vacía; con un rm -rf "$1/" eso ha llegado a borrar directorios enteros por accidente. Verás cómo comprobarlo en la lección de manejo de errores.
Un detalle que confunde: con diez o más argumentos hay que escribir ${10}, porque $10 se interpreta como $1 seguido de un 0. En la práctica, cuando hacen falta tantos, lo normal es usar opciones con nombre (-f archivo) mediante getopts.
🧪 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).
