菜单无法正常工作

菜单无法正常工作

目前我正在尝试为我的 Into to Unix 课程找到一个菜单。我现在遇到的问题是,当我在脚本中输入某些内容时,我的输入会出现,而不是脚本根据输入进行响应。但根据这本书,我应该做得正确,因为我遵循了案例所使用的格式,或者我认为是这样?为了使这项工作正常进行,我需要修改什么?我使用的 shell 也是 bash。

这是我正在做的作业:

  1. 编写一个案例脚本,该脚本将提供执行以下操作的选择:

    A。列出 /etc/passwd 文件中 ID 号大于 999 的四位用户。

    b.仅显示日期命令中的月、日和年。

    C。获取用户选择的文件并以大写形式显示所有字母。

这是我现在使用的代码

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

正如 @manatwork 在评论中指出的那样,您不想exit在用户输入他们的选择后立即进行操作。另外,您的语句对脚本的第一个参数(或 Bash 术语中的第一个位置参数)case进行操作。$1从逻辑上讲,这不是你想要的。您将read用户的选择放入a,所以这就是您想要的case

case "$a"
in
...

相关内容