Estoy tratando de hacer que este script BASH requiera que el usuario ingrese un valor entre 1 y 4 para elegir una tortuga ninja en la declaración del caso. Cualquier otro valor hará que $COUNTER permanezca igual a 0, por lo que será necesario que la instrucción case se ejecute nuevamente. Sin embargo, termino en un bucle infinito si ingreso cualquier valor que no sea del 1 al 4.
1º: ¿Cómo anido una declaración de caso dentro de un bucle while?
2do: ¿Cómo hago para que este script requiera que el usuario ingrese un valor entre 1 y 4?
#!/bin/bash
echo "What is your favorite Ninja Trutle?"
echo "1 - Raphael."
echo "2 - Leonardo."
echo "3 - Michelangelo"
echo "4 - Donatello"
read TURTLE;
COUNTER=0;
while [ $COUNTER -eq 0 ]
do
$COUNTER=$(( $COUNTER + 1 ))
case $TURTLE in
1) echo "Raphael is cool, but rude.";;
2) echo "Leonardo leads.";;
3) echo "Michelangelo is a party dude.";;
4) echo "Donatello does machines.";;
*) echo "Did you even watch the show?"
$COUNTER=0
;;
esac
done
Gracias por cualquier ayuda brindada.
Respuesta1
El error está en las líneas en las que incrementas COUNTER
. El $
símbolo se utiliza cuando se desea desreferenciar el nombre de una variable para obtener su valor. No se utiliza cuando asignas un valor a la variable. Esas líneas deberían decir:
COUNTER=$(( $COUNTER + 1 ))
y
COUNTER=0
Además, dado que el case
comando está dentro del while
bucle, supongo que desea volver a preguntarle al usuario si ingresa un valor no válido. Si es así, también debes poner la read
declaración dentro del bucle.while