CodeAventura
Linux
▸Scripts de Shell▸Tu primer script de shell

Misión

# Tu script va aquí
# Ejecútalo con: sh saludo.sh TuNombre

TerminalTema: Vintage
13 / 16Tu primer script de shell
Anterior

Tu primer script de shell

De comandos sueltos a programas

Hasta ahora has escrito comandos uno a uno en la terminal. Funciona, pero ¿qué pasa si necesitas ejecutar los mismos 10 comandos todos los días? ¿Los escribes cada vez?

No. Los guardas en un script — un archivo de texto con una secuencia de comandos que se ejecutan automáticamente. Es tu primer paso hacia la automatización.

¿Qué es un script de shell?

Un script es simplemente un archivo de texto con comandos, uno por línea. La convención es usar la extensión .sh:

Si guardas esto en mi_script.sh, puedes ejecutarlo con:

Los tres comandos se ejecutan en secuencia, como si los hubieras escrito uno a uno.

Variables

Las variables almacenan valores que puedes reutilizar:

Reglas importantes:

  • Sin espacios alrededor del =: NOMBRE="valor" (correcto) vs NOMBRE = "valor" (error)
  • Para leer la variable, usa $: $NOMBRE
  • Las comillas dobles permiten que $NOMBRE se expanda. Las comillas simples no: '$NOMBRE' muestra literalmente $NOMBRE

Argumentos del script

Cuando ejecutas un script, puedes pasarle datos:

Dentro del script, accedes a estos argumentos con variables especiales:

  • $0 — el nombre del propio script
  • $1 — primer argumento
  • $2 — segundo argumento
  • $@ — todos los argumentos
  • $# — cuántos argumentos se pasaron

Por ejemplo:

Si ejecutas sh script.sh Ana 25, imprime: "Hola, Ana! Tienes 25 años."

Diferencia en nuestro editor

En una terminal real de Linux, $0 es el nombre del script y $1 es el primer argumento. Sin embargo, en el editor de codeaventura, los argumentos están desplazados en una posición:

VariableTerminal realEditor de codeaventura
$0saludo.sh (nombre del script)/bin/sh (el intérprete)
$1manu (primer argumento)saludo.sh (nombre del script)
$2—manu (primer argumento)

Esto ocurre porque no estás usando un Linux real, hemos montado para ti un entorno simulado en el navegador llamado jsh. Es lo suficientemente parecido a un Linux para poder enseñarte todo lo necesario, pero tiene algunas pequeñas diferencias como esta. No te preocupes: el comportamiento estándar es el que hemos explicado arriba ($1 = primer argumento), y es el que encontrarás en cualquier sistema Linux real. Simplemente tenlo en cuenta al probar en el editor.

Comentarios

Las líneas que empiezan con # son comentarios — no se ejecutan:

Los comentarios son para tu yo del futuro. Úsalos para explicar el porqué, no el qué.

Tu desafío

Crea un script saludo.sh que:

  1. Reciba un nombre como primer argumento ($1 en una terminal real, $2 en nuestro editor)
  2. Imprima "Hola, [nombre]!"

Escríbelo en el editor y ejecútalo con sh saludo.sh TuNombre en la terminal.