existe um comando “goto” like no ksh

0

Aqui está o meu script:

#!/bin/ksh

#this is where I want to go again if user enter 
#an answer other than "yes or no"

echo "yes or no?"
read ans

case $ans in

    [yY]*)
        echo "yes"
        ;;

    [nN]*)
        echo "no"
        ;;

    *)
        echo "yes or no only"
        # here, if the answer is not "Y" or "N", 
        # I want to go back to asking "yes or no?"
        ;;
esac

Alguém pode me dar uma dica?

    
por erin00 05.03.2014 / 08:42

1 resposta

5

Você pode colocar o read e seu case em um while loop e break fora quando a condição for satisfeita:

while : ; do
  echo "yes or no?"
  read ans

  case $ans in
    [yY]*)
        echo "yes"
        break
        ;;
    [nN]*)
        echo "no"
        break
        ;;
    *)
        echo "yes or no only"
        ;;
  esac
done

O while : ; do ... done representa um loop infinito. break sai de um loop for , while ou until . Use break para sair, caso a resposta seja y ou n , caso contrário, o loop continuará.

    
por 05.03.2014 / 08:50