免费注册 查看新帖 |

Chinaunix

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

[文本处理] case语句搭配continue的问题 [复制链接]

论坛徽章:
1
15-16赛季CBA联赛之福建
日期:2016-01-19 11:22:51
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2016-01-19 11:02 |只看该作者 |倒序浏览
case  $# in
                 1)      case  $1 in
                           ’-v’) usage
                                 exit  1
                                 ;;
                              *) PROCESS=$1
                   esac
                    ;;

                 2)  case $1  in
                             ’-v’)  continue
                                    ;;
                       esac

                       case $2  in
                             ’-v’)  usage
                                   exit  1
                                    ;;

                                *) PROCESS=$2
                                    ;;
                       esac
                       ;;
如上shell语句中,红色的continue语句返回到哪里?case搭配continue如何判断continue跳转到何处?这种搭配是否推荐?网上搜了许多,没找到有价值的信息。请各位解惑。谢谢。

论坛徽章:
5
金牛座
日期:2015-07-03 13:32:00卯兔
日期:2015-07-03 13:32:17程序设计版块每日发帖之星
日期:2015-11-29 06:20:0015-16赛季CBA联赛之同曦
日期:2015-12-15 09:36:06CU十四周年纪念徽章
日期:2016-07-06 17:18:48
2 [报告]
发表于 2016-01-19 11:10 |只看该作者
     The continue utility  resumes  the  next  iteration  of  the
     enclosing  for  or  while loop. If n is specified, resume at
     the n-th enclosing loop.

shell贴全了吗?是不是while、for什么的?

论坛徽章:
1
15-16赛季CBA联赛之福建
日期:2016-01-19 11:22:51
3 [报告]
发表于 2016-01-19 11:19 |只看该作者
本帖最后由 dt1826 于 2016-01-19 11:37 编辑

确认没有while,for之类的循环,完整shell如下
function  exit_trap
   {
         echo  "\n...EXITING  on  trapped  signal...\n"
   }
trap  ’exit_trap;  exit  3’  1 2 3 15

if  (( $#  != 1 &&  $# != 2  ))
          then
                usage
                exit  1
          fi
case  $# in
                 1)      case  $1 in
                           ’-v’) usage
                                 exit  1
                                 ;;
                              *) PROCESS=$1
                   esac
                    ;;

                 2)  case $1  in
                             ’-v’) continue
                                    ;;
                       esac

                       case $2  in
                             ’-v’)  usage
                                   exit  1
                                    ;;

                                *) PROCESS=$2
                                    ;;
                       esac
                       ;;

                 *)  usage
                     exit 1
                     ;;
          esac

进行搜索,看到别处也有这种用法,但都没有解释,不清楚如何跳转,continue如何起作用。   

论坛徽章:
95
程序设计版块每日发帖之星
日期:2015-09-05 06:20:00程序设计版块每日发帖之星
日期:2015-09-17 06:20:00程序设计版块每日发帖之星
日期:2015-09-18 06:20:002015亚冠之阿尔艾因
日期:2015-09-18 10:35:08月度论坛发贴之星
日期:2015-09-30 22:25:002015亚冠之阿尔沙巴布
日期:2015-10-03 08:57:39程序设计版块每日发帖之星
日期:2015-10-05 06:20:00每日论坛发贴之星
日期:2015-10-05 06:20:002015年亚冠纪念徽章
日期:2015-10-06 10:06:482015亚冠之塔什干棉农
日期:2015-10-19 19:43:35程序设计版块每日发帖之星
日期:2015-10-21 06:20:00每日论坛发贴之星
日期:2015-09-14 06:20:00
4 [报告]
发表于 2016-01-19 14:11 |只看该作者
回复 3# dt1826


    Bash 中这么用是会报错的。

论坛徽章:
33
ChinaUnix元老
日期:2015-02-02 08:55:39CU十四周年纪念徽章
日期:2019-08-20 08:30:3720周年集字徽章-周	
日期:2020-10-28 14:13:3020周年集字徽章-20	
日期:2020-10-28 14:04:3019周年集字徽章-CU
日期:2019-09-08 23:26:2519周年集字徽章-19
日期:2019-08-27 13:31:262016科比退役纪念章
日期:2022-04-24 14:33:24
5 [报告]
发表于 2016-01-19 17:50 |只看该作者
  1. usage (){
  2.     echo hahaha
  3. }

  4. case  $# in
  5.     1)      case  $1 in
  6.             '-v') usage
  7.                     exit  1
  8.                     ;;
  9.                 *) PROCESS=$1
  10.     esac
  11.         ;;
  12.    
  13.     2)  case $1  in
  14.                 '-v') continue
  15.                         ;;
  16.         esac
  17.    
  18.         case $2  in
  19.                 '-v')  usage
  20.                     exit  1
  21.                         ;;
  22.    
  23.                     *) PROCESS=$2
  24.                         ;;
  25.         esac
  26.         ;;
  27.    
  28.     *)  usage
  29.         exit 1
  30.         ;;
  31. esac
  32. echo $PROCESS
复制代码
continue在case里面是没有意义的,测试一下就知道:
# ./test.sh -v b
./test.sh: line 15: continue: only meaningful in a `for', `while', or `until' loop
b

论坛徽章:
6
程序设计版块每日发帖之星
日期:2016-01-15 06:20:00操作系统版块每日发帖之星
日期:2016-01-16 06:20:00IT运维版块每日发帖之星
日期:2016-02-04 06:20:00数据库技术版块每日发帖之星
日期:2016-02-04 06:20:00程序设计版块每日发帖之星
日期:2016-02-10 06:20:01每日论坛发贴之星
日期:2016-02-10 06:20:01
6 [报告]
发表于 2016-01-19 22:56 |只看该作者
把continue改成echo吧,让它啥也不做
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP