タイプミスがあってもスクリプトを続行しない方法 (Shell Script Putty)

タイプミスがあってもスクリプトを続行しない方法 (Shell Script Putty)

私は簡単な注文プログラムを書いて、これを学ぶのに数日しかかからなかった誰かのために大きな進歩を遂げました。 (私がプログラマーではないことを考えると)。プログラムの最初の部分で「注文」または「注文」を許可してから、「終了」または「終了」を許可すると、正常に機能したいと思います。その後、両方を入力しない場合は、入力が無効であるというメッセージを表示したいと思います。この問題を解決するための最良の方法は何ですか?これはシェルスクリプトにあります

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

ベストアンサー1

あなたのスクリプトは非常によく書かれています。次のように、両方の入力が有効であることを確認できます。

# 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

おすすめ記事