Shell break while-true循环
发布时间:2020-12-15 21:57:22 所属栏目:安全 来源:网络整理
导读:有下面的 shell,它在(while true)循环中有一个(while true)循环.我试图用“休息”打破内循环,但事实并非如此. 我想打破内循环显示用户第一循环的选项;建议请. #!/bin/ksh sub_menu() { echo "~~~~~~~~~~~~~~~~~~~~~~~~~" echo " S U B - M E N U " echo "~~~
有下面的
shell,它在(while true)循环中有一个(while true)循环.我试图用“休息”打破内循环,但事实并非如此.
我想打破内循环&显示用户第一循环的选项;建议请. #!/bin/ksh sub_menu() { echo "~~~~~~~~~~~~~~~~~~~~~~~~~" echo " S U B - M E N U " echo "~~~~~~~~~~~~~~~~~~~~~~~~~" echo "1. Display properties" echo "2. Back" } read_sub_options(){ echo "Please select option" read option case $option in 1) sub_menu ;; ***2) break ;;*** *) echo "Please insert options 1 ~ 2";; esac } showSubMenu(){ while true do sub_menu read_sub_options done } read_options(){ echo "Please select option " read option case $option in 1) showSubMenu ;; 2) exit 0;; *) echo "Please insert options ";; esac } show_menus() { echo "~~~~~~~~~~~~~~~~~~~~~" echo " M A I N - M E N U " echo "~~~~~~~~~~~~~~~~~~~~~" echo "1. Sub Menu" echo "2. Exit" } # ----------------------------------- # MAIN # ------------------------------------ while true do show_menus read_options done 这是输出: ~~~~~~~~~~~~~~~~~~~~~ M A I N - M E N U ~~~~~~~~~~~~~~~~~~~~~ 1. Sub Menu 2. Exit Please select option 1 ~~~~~~~~~~~~~~~~~~~~~~~~~ S U B - M E N U ~~~~~~~~~~~~~~~~~~~~~~~~~ 1. Display properties 2. Back Please select option 2 ~~~~~~~~~~~~~~~~~~~~~~~~~ S U B - M E N U ~~~~~~~~~~~~~~~~~~~~~~~~~ 1. Display properties 2. Back Please select option 2 解决方法
以下脚本适用于此处.
所做的更改是,如果调用了sub_menu,则read_sub_options返回2,当选择Back选项时返回1,然后检查showSubMenu中最后一次运行命令的返回值,如果选择了Back,则中断. 有关更多KSH脚本参考信息,请参见KSH script basics和Learning the Korn shell. 有关菜单选择的其他方法的信息,请参阅select和ksh手册页,如您的问题评论中所述. #!/bin/ksh sub_menu() { echo "~~~~~~~~~~~~~~~~~~~~~~~~~" echo " S U B - M E N U " echo "~~~~~~~~~~~~~~~~~~~~~~~~~" echo "1. Display properties" echo "2. Back" return 2; } read_sub_options(){ echo "Please select option" read option case $option in 1) sub_menu ;; 2) return 1;; *) echo "Please insert options 1 ~ 2";; esac } showSubMenu(){ while true do sub_menu read_sub_options if [[ $? == 1 ]] ; then break fi done } read_options(){ echo "Please select option " read option case $option in 1) showSubMenu;; 2) exit 0;; *) echo "Please insert options ";; esac } show_menus() { echo "~~~~~~~~~~~~~~~~~~~~~" echo " M A I N - M E N U " echo "~~~~~~~~~~~~~~~~~~~~~" echo "1. Sub Menu" echo "2. Exit" } # ----------------------------------- # MAIN # ------------------------------------ while true do show_menus read_options done (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |