Test de Bash: 24 preguntas para comprobar lo que sabes

¿Cuánto Bash sabes de verdad? Estas 24 preguntas repasan las 8 lecciones de nuestro curso de Bash: scripts y permisos, variables y comillas, condiciones y bucles, funciones y arrays, redirecciones y tuberías, grep, sed y awk, y cómo escribir scripts que no se rompen. Elige una respuesta en cada pregunta y pulsa Corregir al final: verás tu nota, los aciertos por lección y la explicación de cada respuesta.

No hace falta registrarse y nada se envía a ningún sitio: el test se corrige en tu propio navegador. Todas las respuestas con código se comprobaron ejecutando el código con Bash 5.3.9.

Pregunta 1Lección 1: Primeros pasos

¿Para qué sirve la primera línea de un script, #!/usr/bin/env bash?

Pregunta 2Lección 1: Primeros pasos

¿Qué escribe este script?

#!/usr/bin/env bash
ls /carpeta/que/no/existe 2>/dev/null
echo $?
Pregunta 3Lección 1: Primeros pasos

Creaste backup.sh en la carpeta actual y le diste permiso con chmod +x. ¿Por qué backup.sh responde «command not found» y ./backup.sh sí funciona?

Pregunta 4Lección 2: Variables, comillas y expansiones

¿Qué escribe este script?

#!/usr/bin/env bash
nombre="Ana"
echo 'Hola, $nombre'
echo "Hola, $nombre"
Pregunta 5Lección 2: Variables, comillas y expansiones

¿Qué escribe este script?

#!/usr/bin/env bash
a=3
b=4
echo "$a+$b = $((a + b))"
Pregunta 6Lección 2: Variables, comillas y expansiones

¿Qué escribe este script?

#!/usr/bin/env bash
unset color
echo "${color:-azul}"
echo "[$color]"
Pregunta 7Lección 3: Condiciones, bucles y códigos de salida

¿Qué escribe este script?

#!/usr/bin/env bash
if [[ "10" < "9" ]]; then
    echo "menor"
else
    echo "mayor o igual"
fi
Pregunta 8Lección 3: Condiciones, bucles y códigos de salida

¿Qué escribe este script?

#!/usr/bin/env bash
fruta="mango"
case $fruta in
    m*) echo "empieza por m" ;;
    *o) echo "acaba en o" ;;
esac
Pregunta 9Lección 3: Condiciones, bucles y códigos de salida

¿Qué escribe este script?

#!/usr/bin/env bash
for i in {1..5}; do
    if (( i == 2 )); then continue; fi
    if (( i == 4 )); then break; fi
    echo -n "$i "
done
echo
Pregunta 10Lección 4: Funciones, arrays y cadenas

¿Qué escribe este script?

#!/usr/bin/env bash
x=1
cambiar() {
    local x=2
    echo "dentro: $x"
}
cambiar
echo "fuera: $x"
Pregunta 11Lección 4: Funciones, arrays y cadenas

¿Qué escribe este script?

#!/usr/bin/env bash
colores=(rojo "verde claro" azul)
echo "${#colores[@]}"
Pregunta 12Lección 4: Funciones, arrays y cadenas

¿Qué escribe este script?

#!/usr/bin/env bash
archivo="copia.tar.gz"
echo "${archivo%.*}"
echo "${archivo%%.*}"
Pregunta 13Lección 5: Redirecciones, tuberías y procesos

¿Qué escribe este script?

#!/usr/bin/env bash
echo "hola" > notas.txt
echo "adiós" >> notas.txt
echo "otra vez" > notas.txt
wc -l < notas.txt
Pregunta 14Lección 5: Redirecciones, tuberías y procesos

¿Qué se ve al ejecutar este script?

#!/usr/bin/env bash
ls /no/existe > salida.txt
echo "salida.txt contiene: [$(cat salida.txt)]"
Pregunta 15Lección 5: Redirecciones, tuberías y procesos

¿Qué escribe este script?

#!/usr/bin/env bash
false | true
echo "$? ${PIPESTATUS[*]}"
Pregunta 16Lección 6: Procesar texto: grep, sed y awk

¿Qué escribe este script?

#!/usr/bin/env bash
printf 'ana\nAna\nluis\nmariana\n' | grep -ci 'ana'
Pregunta 17Lección 6: Procesar texto: grep, sed y awk

¿Qué escribe este script?

#!/usr/bin/env bash
echo "2026-10-30" | cut -d- -f2
Pregunta 18Lección 6: Procesar texto: grep, sed y awk

¿Qué escribe este script?

#!/usr/bin/env bash
echo "hola mundo, hola sol" | sed 's/hola/adiós/'
Pregunta 19Lección 7: Scripts robustos: errores, trap y opciones

¿Qué se ve al ejecutar este script?

#!/usr/bin/env bash
set -u
echo "inicio"
echo "valor: $sin_definir"
echo "fin"
Pregunta 20Lección 7: Scripts robustos: errores, trap y opciones

¿Qué se ve al ejecutar este script, y con qué código termina?

#!/usr/bin/env bash
trap 'echo "limpiando"' EXIT
echo "trabajando"
exit 3
Pregunta 21Lección 7: Scripts robustos: errores, trap y opciones

¿Por qué conviene crear los archivos temporales con mktemp en lugar de usar un nombre fijo como /tmp/mi_script.tmp?

Pregunta 22Lección 8: Un proyecto completo

¿Qué es ShellCheck?

Pregunta 23Lección 8: Un proyecto completo

Un script funciona perfectamente desde tu terminal, pero falla cuando lo ejecuta cron. ¿Cuál es la causa más probable?

Pregunta 24Lección 8: Un proyecto completo

En la carpeta, registro.log tiene dos líneas y ninguna contiene «ERROR». ¿Qué se ve al ejecutar este script?

#!/usr/bin/env bash
set -euo pipefail
grep "ERROR" registro.log | wc -l
echo "fin"

Las preguntas siguen el orden del curso. Si fallas alguna, el enlace de su explicación te lleva a la lección donde se explica con ejemplos.