Unix를 처음 접하고 프로그램을 다시 시작하거나 종료하기 위한 간단한 사용자 입력을 만들고 싶습니다. [닫기]

Unix를 처음 접하고 프로그램을 다시 시작하거나 종료하기 위한 간단한 사용자 입력을 만들고 싶습니다. [닫기]

프로그램을 만들고 있는데 사용자에게 다시 주문할 것인지 아니면 프로그램을 종료할 것인지 묻는 간단한 에코를 원합니다. Unix의 Shell에 있습니다.

프로그램은 단순히 순서 변수를 에코하고 읽는 것입니다. 마지막에는 어떤 음식을 원하는지, 몇 KG인지 등이 모두 요약되어 있습니다.

이제 프로그램이 사용자에게 "다시 주문하시겠습니까?"라고 묻기를 원하지만 입력이 프로그램을 다시 시작하거나 프로그램을 종료할 때 "예" 또는 "아니요"에 대한 if 문을 추가하는 방법을 모르겠습니다. 그들이 "아니오"라고 말하면.

도움을 주시면 감사하겠습니다. 간단해 보이지만 온라인에서 도움을 찾을 수 없습니다.

답변1

나는 당신이 다음과 같은 것을 원한다고 생각합니다 :

#!/bin/sh

read -rp 'Fish or chicken? ' protein
read -rp 'Beans or rice? ' starch
read -rp 'Broccoli or asparagus? ' veggie
read -rp 'Beer or beer? ' drink

echo "You have ordered the $protein with a side of $starch and $veggie, and to drink you will have $drink"

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
    fi
done

read표준 입력에서 읽는 쉘 내장 명령입니다. 스위치를 통해 -p사용자에게 "메시지"를 표시하고 기본 REPLY변수 또는 지정된 변수(단백질, 전분, 야채, 음료 등)를 설정합니다.

$0스크립트의 쉘 이름으로 확장되는 쉘 특수 매개변수입니다. 스크립트 이름

사용자가 "다시 주문하시겠습니까?"라고 대답하면 yes스크립트가 다시 실행되고 그렇지 않으면 종료됩니다.


인용하다

읽다

특수 매개변수

조건문인 경우

while 루프

관련 정보