CodeAventura
Linux
▸Scripts de Shell▸Condicionales: if y else

Misión

# Comprueba si se pasó un argumento al script

TerminalTema: Vintage
14 / 16Condicionales: if y else
Anterior

Condicionales: if y else

Tomar decisiones en tus scripts

Hasta ahora tus scripts ejecutan todos los comandos siempre, en orden. Pero en el mundo real necesitas que tu script decida qué hacer según las circunstancias. Para eso existen los condicionales.

if básico

La estructura de un if en shell es:

El fi (if al revés) cierra el bloque. Los espacios dentro de los corchetes [ ] son obligatorios — sin ellos da error.

if / else

Para hacer algo diferente cuando la condición no se cumple:

elif — Múltiples opciones

Para más de dos caminos:

Recuerda que en nuestro editor el primer argumento es $2 (no $1). En una terminal real de Linux sería $1.

Comparaciones de texto

  • = — son iguales
  • != — son diferentes
  • -z "$VAR" — la variable está vacía
  • -n "$VAR" — la variable no está vacía

Siempre pon las variables entre comillas dobles: "$1" en vez de $1. Si la variable está vacía y no usas comillas, el comando se rompe.

Comparaciones numéricas

Para comparar números, no uses = ni <. Usa estos operadores:

  • -eq — igual (equal)
  • -ne — no igual (not equal)
  • -lt — menor que (less than)
  • -gt — mayor que (greater than)
  • -le — menor o igual
  • -ge — mayor o igual

Comprobar archivos

Puedes preguntar si un archivo o directorio existe:

  • -f archivo — existe y es un archivo
  • -d directorio — existe y es un directorio

El código de salida: $?

Todo comando devuelve un número al terminar:

  • 0 significa éxito
  • Cualquier otro número significa error

Puedes ver el código del último comando con $?:

Esto muestra 0 porque ls funcionó bien. El if usa exactamente este mecanismo — evalúa si el comando dentro de [ ] devuelve 0 o no.

Tu desafío

Crea un script check.sh que:

  1. Compruebe si se pasó un argumento (si $2 está vacío, recuerda que en nuestro editor el primer argumento es $2)
  2. Si no hay argumento, muestre: Uso: sh check.sh nombre
  3. Si hay argumento, salude al usuario

Ejecuta sh check.sh (sin argumento) para que muestre el mensaje de ayuda.