Necesitas comandos, flujos y estados de salida. La sección construye programación Bash desde el primer script.
Avanza en orden. Cada lección está redactada para Palta es Cool, utiliza ejemplos propios y termina con una actividad cuya respuesta puedes desplegar.
Ubícate antes de avanzar
Al terminar deberías poder relacionar Scripts y argumentos con Variables y quoting y resolver un caso nuevo.
Reserva entre 75 y 120 minutos o divide el laboratorio en dos sesiones.
Prepara una máquina virtual Linux con red NAT e instantáneas, o WSL para las prácticas que no requieren kernel y systemd completos.
Abrir la guía de herramientas →Diagnóstico rápido: ¿cómo se relacionan Scripts y argumentos y Variables y quoting? +
No necesitas acertar todavía. Escribe una hipótesis de dos líneas y compárala con tu respuesta al finalizar; si puedes corregirla y justificar el cambio, hubo aprendizaje.
Aprende el tema paso a paso
Construirás scripts con contratos claros: shebang, argumentos, variables, condiciones, bucles, funciones y estados de salida.
- El shebang elige intérprete; los permisos autorizan la ejecución
- Las comillas preservan los límites entre argumentos
- Condiciones comprueban estados; funciones encapsulan capacidades
El shebang elige intérprete; los permisos autorizan la ejecución
Al ejecutar ./script.sh, el kernel consulta el shebang para localizar el intérprete. bash script.sh ignora el bit ejecutable y llama Bash explícitamente. La extensión .sh es una convención; la sintaxis real depende del intérprete declarado.
#!/usr/bin/env bash busca bash en PATH.
bash -n revisa sintaxis sin ejecutar.
El script debe documentar entradas, salida y dependencias.
¿Qué diferencia práctica hay entre ./script.sh y bash script.sh?
Mostrar respuesta +
./script.sh requiere permiso de ejecución y usa el intérprete del shebang; bash script.sh invoca Bash explícitamente y solo necesita poder leer el archivo.
Las comillas preservan los límites entre argumentos
Bash expande parámetros, sustituciones y patrones antes de ejecutar. Una expansión sin comillas puede dividirse por IFS y expandir comodines. Usa "$variable", "$@" y arrays para conservar cada dato como un argumento; no guardes una orden completa en una cadena esperando que las comillas interiores se vuelvan sintaxis.
$# cuenta argumentos; $1 y siguientes acceden a ellos.
"$@" conserva cada argumento por separado.
Arrays modelan listas de argumentos de Bash.
¿Por qué for x in $@ es frágil?
Mostrar respuesta +
Porque vuelve a dividir y expandir cada argumento; un nombre con espacios o comodines deja de conservar su identidad. Debe usarse "$@".
Condiciones comprueban estados; funciones encapsulan capacidades
if decide según el código de salida de una orden. [[ ]] ofrece pruebas seguras propias de Bash; (( )) evalúa aritmética entera. Los bucles deben progresar hacia un término. Una función usa local para evitar colisiones y return comunica un estado de 0 a 255; los datos pueden viajar por stdout.
Éxito es 0; otros valores representan clases de fallo.
case expresa alternativas discretas con claridad.
No uses la salida textual como sustituto del estado cuando ambos importan.
¿Qué evalúa realmente if comando; then en Bash?
Mostrar respuesta +
Evalúa el código de salida del comando: entra en then cuando es 0 y en else cuando es distinto de cero.
Tu recorrido en tres ideas
- El shebang elige intérprete; los permisos autorizan la ejecución
- Las comillas preservan los límites entre argumentos
- Condiciones comprueban estados; funciones encapsulan capacidades
Comprueba que puedes usarlo
Antes de continuar, revisa estos tropiezos frecuentes y resuelve un caso sin copiar los ejemplos.
Usar expansiones sin comillas para rutas o argumentos.
Confundir el texto impreso por una orden con su código de salida.
Ahora hazlo sin guía
Crea una utilidad que reciba varias rutas, valide opciones y entregue cantidad, tamaño y estado sin romper nombres extraños.
Mostrar pauta de corrección +
- Conserva "$@" y usa arrays cuando corresponde.
- Separa salida y diagnóstico.
- Devuelve estados distintos para uso incorrecto y fallo operativo.
