Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2073535
  • 博文数量: 470
  • 博客积分: 10206
  • 博客等级: 上将
  • 技术积分: 5620
  • 用 户 组: 普通用户
  • 注册时间: 2008-07-03 12:50
文章分类

全部博文(470)

文章存档

2012年(1)

2011年(18)

2010年(47)

2009年(404)

分类:

2009-04-13 15:43:23

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语句自己能解决这问题吗?
谢谢,请各位提示一下.



您对本贴的看法:
|
  帅哥 (春之风)
大天使




UID:20110253
注册:2003-11-7
最后登录: 2009-04-13
帖子:
精华:







状态:...离线...

[] [] [博客]


[]     顶部
发表于 2007-12-25 15:36 
有些启动脚本上这么写

CODE:
function dostart(){...}
function dostop(){...}

case $1 in
   start)
       dostart ;;
   stop)
       dostop;;
    restart)
       dostop
       dostart
       ;;
esac

也许有借鉴意义



您对本贴的看法:

__________________________________

Debian(lenny)
GNU bash, version 3.1.17(1)-release (i486-pc-linux-gnu)
GNU Awk 3.1.5
GNU sed version 4.1.5
GNU grep 2.5.3
|
 爱心使者2003
风云使者




UID:20013621
注册:2002-7-27
最后登录: 2009-02-07
帖子:
精华:0







状态:...离线...

[] [] [博客]


[]     顶部
发表于 2007-12-25 15:42 
好象不是我想要的结果
如果我的执行步骤很多,这种做法无法满足需要.
每个步骤做的事情不一样,不重复.

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

是这么一个需求.



您对本贴的看法:
|
 爱心使者2003
风云使者




UID:20013621
注册:2002-7-27
最后登录: 2009-02-07
帖子:
精华:0







状态:...离线...

[] [] [博客]


[]     顶部
发表于 2007-12-26 09:54 
好象没人知道?



您对本贴的看法:
|
 爱心使者2003
风云使者




UID:20013621
注册:2002-7-27
最后登录: 2009-02-07
帖子:
精华:0







状态:...离线...

[] [] [博客]


[]     顶部
发表于 2007-12-26 18:59 
能请版主帮忙看看么?
或者哪位高手支个招
谢谢



您对本贴的看法:
|
  帅哥 (Tim)
法师


CU奥运火炬传递手2008
UID:20465018
注册:2006-9-13
最后登录: 2009-04-13
帖子:
精华:0







来自:长春
状态:...在线...

[] [] [博客]


[]     顶部
发表于 2007-12-27 10:17 
可以把每一步都写成一个函数,然后将函数的名字记录在数组中。

CODE:
one() {
}

two() {
}

...

array=( one two three four five )

read step
#数组的脚标是从0开始的
let step=step-1
for((i=$step;i<=${#array};i++)) {
        array[i]
}

简单的写个思路,没有测试过。



您对本贴的看法:

__________________________________

记住该记住的,忘记该忘记的。改变能改变的,接受不能改变的。
|
阅读(1037) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~