免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 4456 | 回复: 5
打印 上一主题 下一主题

case in语句特殊用法 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-12-25 15:01 |只看该作者 |倒序浏览
case $opt in
        a ) dosome;;
        b ) dosome;;
        c ) dosome;;
        ? ) echo "error"
            exit 1;;
esac

正常情况都是如此使用的
即CASE的情况只使用了一种情况
但我现在有个应用要求,一个处理被分成了很多步骤,
根据执行的参数,从其中某一步骤开始执行,并且后续的步骤全部都要执行,
如何让CASE语句执行后不跳出,从而继续执行后面的CASE呢?
我觉得C语言就是这样的,如果不用break语句,它就是顺着执行下去的
SHELL 的CASE语句好象不行.

例如:
case $opt in
        1 ) dosome;;
        2 ) dosome;;
        3 ) dosome;;
        4 ) dosome;;
        5 ) dosome;;
        ? ) echo "error"
            exit 1;;
esac
如果参数是3,我希望的是从CASE开始,3,4,5都要执行,而不是只执行3后就退出.

外面套个循环,每次把参数opt加1到是可以做到,但我想知道CASE语句自己能解决这问题吗?
谢谢,请各位提示一下.

论坛徽章:
0
2 [报告]
发表于 2007-12-25 15:36 |只看该作者
有些启动脚本上这么写

  1. function dostart(){...}
  2. function dostop(){...}

  3. case $1 in
  4.    start)
  5.        dostart ;;
  6.    stop)
  7.        dostop;;
  8.     restart)
  9.        dostop
  10.        dostart
  11.        ;;
  12. esac
复制代码


也许有借鉴意义

论坛徽章:
0
3 [报告]
发表于 2007-12-25 15:42 |只看该作者
好象不是我想要的结果
如果我的执行步骤很多,这种做法无法满足需要.
每个步骤做的事情不一样,不重复.

根据STEP的参数决定从其中的某一步骤开始,以后的全部顺序执行
而STEP以前的全部不执行.

是这么一个需求.

论坛徽章:
0
4 [报告]
发表于 2007-12-26 09:54 |只看该作者
好象没人知道?

论坛徽章:
0
5 [报告]
发表于 2007-12-26 18:59 |只看该作者
能请版主帮忙看看么?
或者哪位高手支个招
谢谢

论坛徽章:
23
15-16赛季CBA联赛之吉林
日期:2017-12-21 16:39:27白羊座
日期:2014-10-27 11:14:37申猴
日期:2014-10-23 08:36:23金牛座
日期:2014-09-30 08:26:49午马
日期:2014-09-29 09:40:16射手座
日期:2014-11-25 08:56:112015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:49:0315-16赛季CBA联赛之山东
日期:2017-12-21 16:39:1915-16赛季CBA联赛之广东
日期:2016-01-19 13:33:372015亚冠之山东鲁能
日期:2015-10-13 09:39:062015亚冠之西悉尼流浪者
日期:2015-09-21 08:27:57
6 [报告]
发表于 2007-12-27 10:17 |只看该作者
可以把每一步都写成一个函数,然后将函数的名字记录在数组中。
  1. one() {
  2. }

  3. two() {
  4. }

  5. ...

  6. array=( one two three four five )

  7. read step
  8. #数组的脚标是从0开始的
  9. let step=step-1
  10. for((i=$step;i<=${#array};i++)) {
  11.         array[i]
  12. }
复制代码


简单的写个思路,没有测试过。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP