Eig*_*all 5 unix linux bash loops menu
我正在使用这样的bash脚本菜单:
#!/bin/bash
PS3='Please enter your choice: '
options=("Option 1" "Option 2" "Option3" "Quit")
select opt in "${options[@]}"
do
case $opt in
"Option 1")
echo "you chose choice 1"
;;
"Option 2")
echo "you chose choice 2"
;;
"Option 3")
echo "you chose choice 3"
;;
"Quit")
break
;;
*) echo invalid option;;
esac
done
Run Code Online (Sandbox Code Playgroud)
每个菜单选择后,我都会收到提示
Please enter your choice:
Run Code Online (Sandbox Code Playgroud)
如何在每个选项完成执行后始终显示菜单?我已经做了一些环顾四周,我想我可以做一些while循环,但我没有能够得到任何工作.
tho*_*hom 16
使它美观和用户友好;-)
#!/bin/bash
while :
do
clear
cat<<EOF
==============================
Menusystem experiment
------------------------------
Please enter your choice:
Option (1)
Option (2)
Option (3)
(Q)uit
------------------------------
EOF
read -n1 -s
case "$REPLY" in
"1") echo "you chose choice 1" ;;
"2") echo "you chose choice 2" ;;
"3") echo "you chose choice 3" ;;
"Q") exit ;;
"q") echo "case sensitive!!" ;;
* ) echo "invalid option" ;;
esac
sleep 1
done
Run Code Online (Sandbox Code Playgroud)
使用函数调用或对其他脚本的调用替换此示例中的回声.
只是如下修改了您的脚本。它为我工作!
#!/bin/bash
while true
do
PS3='Please enter your choice: '
options=("Option 1" "Option 2" "Option 3" "Quit")
select opt in "${options[@]}"
do
case $opt in
"Option 1")
echo "you chose choice 1"
break
;;
"Option 2")
echo "you chose choice 2"
break
;;
"Option 3")
echo "you chose choice 3"
break
;;
"Quit")
echo "Thank You..."
exit
;;
*) echo invalid option;;
esac
done
done
Run Code Online (Sandbox Code Playgroud)