Como não continuar o script se entrada errada for inserida (Shell Script Putty)

1

Eu fiz um programa simples para pedir comida, eu já cheguei muito longe para alguém que teve apenas alguns dias para aprender isso. (considerando que eu não sou um programador). Eu quero que a primeira parte do meu programa permita 'Order' ou 'order', então 'Quit' ou 'quit', o que funciona bem. Então eu quero que ele tenha uma mensagem de que a entrada não é válida se nenhum deles for inserido. Qual é a melhor maneira de contornar isso? Isso está no Shell Script

clear
read -rp "Do you want to order or quit?" start
    if echo "$start" | grep -iq 'order'; then
    continue
    elif echo "$start" | grep -iq 'quit'; then
    exit 0
    else echo "Please order or quit";
fi

echo "Please enter your name"
read name
echo "What is your phone number"
read number
echo "What kind of fruit do you want?"
read fruit
echo "How much KG do you want?"
read kg

echo "^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^"
echo  "Hello" $name" here is a summary of your order:"
date
echo "^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^"
echo "Your phone number is:" $number
echo "You have ordered" $kg "kg of" $fruit
echo $fruit "is £4 a kilogram, so you will pay"
expr 4 \* $kg

while true; do
read -rp 'Would you like to order again?' order
if echo "$order" | grep -iq 'yes'; then
    exec $0
elif echo "$order" | grep -iq 'no'; then
     exit 0
else echo "Please say Yes or No";
fi
done
    
por Dillan 30.04.2018 / 12:17

1 resposta

0

Bom trabalho no seu roteiro. Você pode verificar se nenhuma entrada é válida assim:

# change lowercase to uppercase
start='echo $start | tr "[a-z]" "[A-Z]"' 

# exit if start isn't either "ORDER" or "QUIT"
if [ $start != "ORDER" ] && [ $start != "QUIT" ]
then
    echo "Your input was not correct"
    exit
fi
    
por 30.04.2018 / 14:45

Tags