메뉴가 제대로 작동하지 않음

메뉴가 제대로 작동하지 않음

현재 저는 Into to Unix 과정에 대한 메뉴를 찾으려고 노력하고 있습니다. 지금 겪고 있는 문제는 스크립트에 무언가를 입력할 때 입력에 따라 응답하는 스크립트 대신 내 입력이 나타나는 것입니다. 하지만 책에 따르면 사건에 사용된 형식을 따르고 있기 때문에 올바르게 수행해야 한다고 생각합니까? 이 작업을 수행하려면 무엇을 수정해야 합니까? 내가 사용하는 쉘도 bash입니다.

제가 하고 있는 숙제는 이렇습니다.

  1. 다음을 수행하기 위한 옵션을 제공하는 케이스 스크립트를 작성하십시오.

    ㅏ. /etc/passwd 파일에 ID 번호가 999보다 큰 네 명의 사용자를 나열합니다.

    b.date 명령에는 월, 일, 연도만 표시합니다.

    씨. 사용자가 선택한 파일을 가져와서 모든 문자를 대문자로 표시합니다.

지금 사용하고 있는 코드입니다

clear
if [ "$#" -ne 1 ]; then
    echo Press 1 for a list of users with the UID greater than 999
    echo Press 2 for the Day, Month, and Year
    echo Press 3 to show a file name from lower case to upper case
    read a
    exit
fi

case "$1" in
    1) awk -F: '($3>=999)  && ($3!=9999)' /etc/passwd ;;
    2) echo Todays date is: ; date | awk '{print $2, $3, $6}' ; sleep 1 ;;
    3) ls -aC | more ; echo What file would you like to change from lower case to uppercase?  ;read y ;sleep 1 ; clear ; echo $y | tr '[:lower:]' '[:upper:]' ; sleep 1 ;;
    *) echo Invalid input
esac

답변1

exit@manatwork가 주석에서 지적했듯이 사용자가 선택 항목을 입력한 직후에 이를 수행하고 싶지는 않습니다 . 또한 명령문은 case스크립트의 첫 번째 인수(또는 Bash 용어로 첫 번째 위치 인수)에 대해 작동합니다. $1논리적으로 이것은 당신이 원하는 것이 아닙니다. read사용자의 선택 사항을 입력하면 다음 a과 같습니다 case.

case "$a"
in
...

관련 정보