Julio Cardenas
Diego Ramirez
Gracias Julio!
Miguel Ángel Ríos Yáñez
Muchas Gracias por la información compañero
Domina la sentencia case en Bash con un ejemplo claro en Ubuntu. Aprende a evaluar opciones individuales y rangos de valores, similar a un switch, para construir menús interactivos y decisiones limpias en tus scripts. Verás cómo solicitar una opción de la A a la Z y responder con acciones específicas.
¿Qué es la sentencia case y para qué sirve en Bash?
La sentencia case permite validar una expresión simple (un número o una cadena) y compararla contra patrones definidos. También admite rangos de valores, muy útil cuando se requieren menús con varias opciones sin anidar múltiples IFs.
¿Qué valida y cómo se compara con switch?
¿Por qué usarla para menús y decisiones?
¿Cómo se construye el patrón con opciones y rangos?
Para este ejemplo, se crea una variable llamada "opción", se solicita un valor de la A a la Z, y se responde según el patrón elegido. Se muestran tres casos: A, B, y un rango de C a E; cualquier otro valor será incorrecto.
¿Cómo luce el código base en Bash?
echo -e "\nEjemplo: sentencia case" read -p "Ingrese una opción de la A a la Z: " opcion case "$opcion" in "A") echo -e "\nOperación, guardar archivo";; "B") echo "Operación, eliminar archivo";; [C-E]) echo "No está implementada la operación";; *) echo "Opción incorrecta";; # fin de patrones esac
¿Qué puntos de sintaxis debes cuidar?
¿Qué resultados obtendrás al ejecutar el script?
Al probar el flujo, se observa lo siguiente según la entrada ingresada:
Este enfoque demuestra que case puede validar una expresión simple con conjunto de valores y rangos, ideal para manejar menús. Además, se conecta con habilidades ya vistas: IFs y expresiones condicionales, y prepara el terreno para trabajar luego con iteraciones y seguir construyendo utilidades en Postgres.
¿Te gustaría ver variantes con números o validar otros rangos? Deja un comentario con tus dudas o ejemplos que quieras practicar.
Julio Cardenas
Diego Ramirez
Gracias Julio!
Miguel Ángel Ríos Yáñez
Muchas Gracias por la información compañero
German Tellez Vanegas
Sería una buena idea renovar este curso. Algunos conceptos no quedan tan claros.
Enzo Venturi
Concuerdo totalmente.
José Carlos Vielman Mallada
concuerdo
Joserra Parada Fontaiña
Si pongo "*") no me reconoce, sin embargo me funciona bien sin las comillas *) así sí me funciona correctamente.
Elías Abel Vilca Huarcaya
igual a mi.
Miguel Angel Reyes Moreno
Es que con "*" evalua ese caracter en específico, si es * entonces es como el else. En este caso es mejor no usar las comillas.
Edinson Padrón
Emmanuel García
Está genial 🙌
Irving Juárez
Aquí hay un ejemplo general del case statement:
case EXPRESSION in PATTERN_1) STATEMENTS ;; PATTERN_2) STATEMENTS ;; PATTERN_N) STATEMENTS ;; *) STATEMENTS ;; esac
Daniel Vargas
Como hacer que el script no discrimine entre minusculas y mayusculas?
Daniel Adolfo Ordoñez Rubio
Hola, Daniel :) Podrías convertir el texto en minúscula y compararlo con texto en minúscula, o hacerlos todos mayúscula.
Si quieres ver un ejemplo de como convertir texto a minúscula en bash:
a="Hi all" $ echo "$a" | tr '[:upper:]' '[:lower:]' //hi all <- resultado
Irving Juárez
En el caso de los case statements, solo hazlo con [A-z]
Harvi Calle
En mi caso, apliqué el operador or, para que la A pueda ser insertada tanto en mayúscula, como en minúscula.
#!/bin/bash #expresion case, para validar rango de valores. #Autor: @harvif opcion="" echo "ejemplo Sentencia case" read -p "Ingrese una opción de la A a la Z" opcion echo -e "\n" case $opcion in [a] | [A]) echo -e "\n Operacion Guardar Archivo";; "e") echo -e "\n Operacion eliminar archivo";; [C-E]) echo -e "/n No esta implementada la opcion";; *) echo -e "opcion no implementada" esac
José Carlos Vielman Mallada
Correción de la línea de código de la "opción incorrecta":
\*) echo "Opcion Incorrecta";;
Luis Alberto Juarez Corona
Da error "*") "opcion Incorrecta debe ser ->
*) echo "opcion Incorecta"
juan CORSI
#!/bin/bash
read -p "Escribe un día de la semana: " dia
case $dia in "Lunes") echo "Es un día laborable." ;; "Martes" | "Miércoles" | "Jueves" | "Viernes") echo "Es un día laborable." ;; "Sábado" | "Domingo") echo "Es un fin de semana." ;; *) echo "No es un día válido." ;; esac
Fernando del Olmo
Está mal escrito el script, no anda bien porque en primer lugar falta un echo en la penúltima línea y también sobran las comillas. Además de que el profesor no explico un pimiento, muy mala esta clase en verdad.
Fernando del Olmo
opcion=""
echo "Ejemplo sentencia case"
read -n1 -p "Indique una opcion de la A a la E: " opcion
echo -e "\n"
case $opcion in
"A") echo -e "\nOperación Guardar Archivo";;
"B") echo "Operación Eliminar Archivo";;
[C-E]) echo "No esta implementada la operacion";;
*) echo "Opcion incorrecta"
esac
Luis Alvarez
Gracias amigo, la verdad me esta costando bastante tomar esta clase, el profesor va apurado y no explica nada bien.
Primera vez que me pasa esto en platzi luego de 3 años :(
Maximiliano Cuestas
Este vato no explica nada, me gustaria que los cursos sean de una calidad superior porque quedan muy por detras
Ian Cristian Ariel Yané
#!/bin/bash # Programa que implementa la funcion case para en base a la opcion elegida, seguir un algoritmo echo "Elija un numero entre 0 y 10: " read opcion case $opcion in 1) echo "Te toca un perfume";; 2) echo "Te toca perder.";; *) echo "Opcion erronea." esac
Cristian Camilo Cortes Ortiz
Terminal:
#!/bin/bash # Program to exemplify how to use 'case' sentence. # Author: Cristian Camilo - Cristianco9 option="" filter='^[A-Z]?$' echo "************ VALIDATION SYSTEM ************" read -p "Please enter a option between (A-Z): " option while [[ ! $option =~ $filter ]]; do echo "************* INCORRECT VALUE *************" read -p "Please enter a option between (A-Z): " option done case $option in "A") echo -e "\n*************** File saved ****************";; "B") echo -e "\n************* File deleted ****************";; [C-E]) echo -e "\n*********** NOT IMPLEMENTATED *************";; *) echo -e "****************** ERROR ******************" esac echo "******************* END *******************"
Diego Andrés Beltrán Garavito
Hola, dejos mis apuntes. saludos.
# ! /bin/bash # programa para explicar sentencia case # Author: Diego Beltran tw @diguitodev hista @diegodevelops opcion="" echo "Ejemplo de sentencia case" read -p "ingrese una opcion de la A - Z: " opcion echo -e "\n" case $opcion in "A") echo -e "\nOperacion guardar archivo";; "B") echo "Operación eliminar archivo";; [C-E]) echo "No esta implementada la operacion";; "*") "opcion incorrecta" esac```
Marvin Javier Santos Fernández
Cristian Dario Prieto Avella
¿Lo que se usó para manejar rangos [C-E], es una expresión regular?
Xavier Medina Veintimilla
Yes. :D Para tener más contexto, podrías tomar nuestro curso de Expresiones Regulares, está buenísimo.
Nunca pares de aprender. 💚
Daniel Felipe Ibarra Banquez
Que significa esac?
Axel Yaguana
Team Platzi¡Hola! :D
esac es para dar una expresión para evaluar y ejecutar varias declaraciones diferentes basadas en el valor de la expresión. El intérprete compara cada caso con el valor de la expresión hasta que encuentra una coincidencia. Si nada coincide, se utilizará una condición predeterminada.
Cristian Dario Prieto Avella
Solamente es case escrito al revés. Se usa para indicarle a Bash cuando se termina la sentencia case.
Miguel Angel Reyes Moreno
El código de esta clase debería quedar así:
\#!/bin/bash \# Programa para ejemplificar el uso de la sentencia CASE opcion="" echo "Ejemplo sentencia Case" read -p "Ingrese una opción de la A a la Z: " opcion echo -e "\n" case $opcion in 	"A") echo -e "\nOperación Guardar Archivo";; 	"B") echo -e "Operación Eliminar Archivo";; 	\[C-E]) echo "No está implementada la operación";; 	\*) echo "Opción incorrecta";; esac
Para el caso default, cuando las entradas del case no se cumplen, el asterisco debe ir sin comillas.
#/bin/bash #programa para validar la sentencia case color="" read -p "digite un color: " color case $color in "amarillo") echo "Amarillo en ingles es Yellow";; "azul") echo "Azul en ingles es Blue";; "rojo") echo "Rojo en ingles es Red";; *) echo "color no conocido";; esac
En Fish Shell:
#!/usr/bin/fish set -l count set -l stars while true read -n1 -P '¿Cuántas estrellitas le darías a este curso? (1-5)> ' count if string match --regex --quiet '^[1-5]$' $count break else echo 'Por favor, introduce un número del 1 al 5' end end # String ###################################################################### echo -e '\nWith the `string` builtin command' echo 'Gracias por darle estás estrellitas al curso '(string repeat -n $count '🌟') # For ######################################################################### for ignore in (seq $count) set stars "$stars🌟" end echo -e '\nWith `for`' echo "Gracias por darle estás estrellitas al curso $stars" # Switch-case ################################################################# switch $count case '1' set stars '🌟' case '2' set stars '🌟🌟' case '3' set stars '🌟🌟🌟' case '4' set stars '🌟🌟🌟🌟' case '5' set stars '🌟🌟🌟🌟🌟' case '*' exit 1 # Should not be reached end echo -e '\nWith `switch-case`' echo "Gracias por darle estás estrellitas al curso $stars"