Estou tentando fazer com que este script BASH exija que o usuário insira um valor entre 1 e 4 para escolher uma tartaruga ninja na instrução case. Qualquer outro valor fará com que $COUNTER permaneça igual a 0, exigindo, portanto, que a instrução case seja executada novamente. No entanto, acabo em um loop infinito se inserir qualquer valor diferente de 1 a 4.
1º - Como aninhei uma instrução case dentro de um loop while?
2º - Como faço para que esse script exija que o usuário insira um valor entre 1 - 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
Obrigado por qualquer ajuda fornecida.
Responder1
O erro está nas linhas em que você incrementa o COUNTER
. O $
símbolo é usado quando você deseja desreferenciar o nome de uma variável para obter seu valor. Não é usado quando você atribui um valor à variável. Essas linhas devem ser lidas:
COUNTER=$(( $COUNTER + 1 ))
e
COUNTER=0
Além disso, como o case
comando está dentro do while
loop, presumo que você queira avisar o usuário novamente se ele inserir um valor inválido. Se for assim, você também deve colocar a read
instrução dentro do loop.while