Asi*_*sif 2 shell shell-script
我只是创建了一个新的 shell 脚本,但遇到了一些小问题。以下是我的脚本:-
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
}
Run Code Online (Sandbox Code Playgroud)
当用户输入“无效输入”时,该函数将打印所有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 :
Run Code Online (Sandbox Code Playgroud)
仅select:当用户输入无效时如何打印?
Select:e
Invalid input
Select:s
Invalid input
Run Code Online (Sandbox Code Playgroud)
由于您只想第一次打印有关选项 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
}
Run Code Online (Sandbox Code Playgroud)
示例输出(这是问题所期望的):
Main Menu:
A. Process Managements Utilities
B. Memory Managements Utilities
C. Exit
Select :q
Invalid Input
Select :q
Invalid Input
Run Code Online (Sandbox Code Playgroud)
通过这种方式,在调用函数时会打印一次有关选择选择的信息,mainMenu然后while循环read输入并case执行您想要的工作。如果输入无效,则while再次循环询问 by read -p "Select"。