退出bash switch语句
发布时间:2020-12-15 22:25:30 所属栏目:安全 来源:网络整理
导读:我编写了一个菜单驱动的bash脚本,它使用while循环内部的switch case来执行各种菜单选项.一切正常.现在我正在尝试通过对用户输入执行错误测试来改进程序,但我似乎无法使其工作…… 问题是我不知道如何正确地突破switch语句,而不会打破while循环(这样用户可以
我编写了一个菜单驱动的bash脚本,它使用while循环内部的switch case来执行各种菜单选项.一切正常.现在我正在尝试通过对用户输入执行错误测试来改进程序,但我似乎无法使其工作……
问题是我不知道如何正确地突破switch语句,而不会打破while循环(这样用户可以再试一次). # repeat command line indefinitely until user quits while [ "$done" != "true" ] do # display menu options to user echo "Command Menu" # I cut out the menu options for brevity.... # prompt user to enter command echo "Please select a letter:" read option # switch case for menu commands,accept both upper and lower case case "$option" in # sample case statement a|A) echo "Choose a month" read monthVal if [ "$monthVal" -lt 13 ] then cal "$monthVal" else break # THIS DOES NOT WORK. BREAKS WHILE LOOP,NOT SWITCH! fi ;; q|Q) done="true" #ends while loop ;; *) echo "Invalid option,choose again..." ;; esac done exit 0 当用户输入有效的月份值时程序工作正常,但如果他们输入的数字高于13,而不是打破switch语句并再次重复循环,程序会断开switch和while循环并停止运行. 解决方法
将该案例的主体移动到一个函数中,您可以随意从函数返回.
do_A_stuff() { echo "Choose a month" read monthVal if [ "$monthVal" -lt 13 ] then cal "$monthVal" else return fi further tests ... } 然后 case $whatever in a|A) do_A_stuff ;; (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
推荐文章
站长推荐
热点阅读