目前我正在尝试为我的 Into to Unix 课程找到一个菜单。我现在遇到的问题是,当我在脚本中输入某些内容时,我的输入会出现,而不是脚本根据输入进行响应。但根据这本书,我应该做得正确,因为我遵循了案例所使用的格式,或者我认为是这样?为了使这项工作正常进行,我需要修改什么?我使用的 shell 也是 bash。
这是我正在做的作业:
编写一个案例脚本,该脚本将提供执行以下操作的选择:
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
...