我有一个简单的 bash 菜单脚本可以使用几乎完美的。但由于某种原因,如果我不使用“退出”选项或使用 CTRL+C 退出脚本前我关闭终端窗口,然后脚本进入无限循环,CPU 使用率从 4% 上升到 50%!然后我必须使用“kill -9 bash”终止脚本才能让我的 CPU 使用率再次下降。但如果我使用“退出”或“CTRL+C”退出脚本,那么它就可以正常工作。
当然,在完美的世界中,我总是会在关闭终端会话之前先退出,但是一旦我将其放入我的工作流程中,肯定会有一天我忘记并关闭终端会话而不先退出脚本。然后我的 CPU 使用率就会在后台上升。
我知道这与使用“while true; do”有关,因为在开始使用它之前我没有遇到这个问题。但我需要“while true; do”,否则返回主菜单时子菜单将不会显示主菜单选项。因此必须实施这一点。
有任何想法吗?
#!/bin/bash
main_menu () {
while true; do
clear
PS3='Select an option: '
options=("Option1" "Option2" "SubMenu" "Exit")
select opt in "${options[@]}";
do
case $opt in
"Option1")
echo ""
echo Option1
read -p ""
clear
break
;;
"Option2")
echo ""
echo Option2
read -p ""
clear
break
;;
"SubMenu")
while true; do
clear
PS3='Select an option: '
options=("SubMenu Option1" "SubMenu Option2" "Main Menu")
select opt in "${options[@]}"
do
case $opt in
"SubMenu Option1")
echo ""
echo "Sub-Menu Option1"
read -p ""
clear
break
;;
"SubMenu Option2")
echo ""
echo "Sub-Menu Option2"
read -p ""
clear
break
;;
"Main Menu")
break 3
;;
*) echo "invalid option"
;;
esac
done
done
;;
"Exit")
exit
;;
*) echo "invalid option"
;;
esac
done
done
}
main_menu