쉘 스크립트 조건부 루프

쉘 스크립트 조건부 루프

방금 새로운 쉘 스크립트를 생성했는데 약간의 문제가 발생했습니다. 아래는 내 스크립트입니다:-

function mainMenu(){
    while :
    do
    echo -e "\nMain Menu:"
    echo " A. Process Managements Utilities"
    echo " B. Memory Managements Utilities"
    echo " C. Exit"

    read -p "Select :" menuSelect
    echo

    case $menuSelect in

            a|A) processMgmt;;
            b|B) memoryMgmt;;
            c|C) exit 0;;

            *)echo "Invalid Input"
              echo
              ;;
    esac
    done
}

사용자가 "INVALID INPUT"을 입력하면 함수는 모든 mainMenu()출력을 인쇄합니다.

Main Menu:
 A. Process Managements Utilities
 B. Memory Managements Utilities
 C. Exit

Select :e
Invalid Input

Main Menu:
 A. Process Managements Utilities
 B. Memory Managements Utilities
 C. Exit

 Select :

select:사용자 입력이 유효하지 않은 경우 에만 인쇄하는 방법은 무엇입니까 ?

Select:e
Invalid input
Select:s
Invalid input

답변1

처음으로 옵션 A, B 등에 대한 정보만 인쇄하려고 하므로,while인쇄 후 반복 시작그것:

function mainMenu(){

    echo -e "\nMain Menu:"
    echo " A. Process Managements Utilities"
    echo " B. Memory Managements Utilities"
    echo " C. Exit"

while :
    do

    read -p "Select :" menuSelect
    echo

    case $menuSelect in

            a|A) processMgmt;;
            b|B) memoryMgmt;;
            c|C) exit 0;;

            *)echo "Invalid Input"
              echo
              ;;
    esac
    done
}

예시 출력(예:예상되는질문에서) :

Main Menu:
 A. Process Managements Utilities
 B. Memory Managements Utilities
 C. Exit
Select :q

Invalid Input

Select :q

Invalid Input

이렇게 하면 함수가 호출될 때 선택 항목에 대한 정보가 한 번 인쇄된 mainMenu다음 입력을 while반복하여 원하는 작업을 수행합니다.readcase입력이 잘못된 경우, while그리고 루프에서 다시 물어보세요 read -p "Select".

관련 정보