나는 간단한 주문 프로그램을 작성했고 이것을 배우는 데 며칠 밖에 걸리지 않은 누군가를 위해 큰 진전을 이루었습니다. (제가 프로그래머가 아니라는 점을 고려하면). 프로그램의 첫 번째 부분에서 "주문" 또는 "주문"을 허용한 다음 "종료" 또는 "종료"를 허용하면 제대로 작동하기를 원합니다. 그런 다음 둘 다 입력하지 않으면 입력이 유효하지 않다는 메시지를 표시하고 싶습니다. 이 문제를 해결하는 가장 좋은 방법은 무엇입니까? 이것은 쉘 스크립트에 있습니다
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