免费注册 查看新帖 |

Chinaunix

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

shell 下面如何写swith这样的冬冬 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2004-12-16 10:11 |只看该作者 |倒序浏览
我想在shell下写一个脚本,实现12月分别向12个目录中放一些文件
大体意思就是

  1. switch(months){
  2.     case 1:
  3.               exec>>/chroot/log1/recv`date '+%Y%m%d'`.log 2>&1
  4.               break;
  5.     case 2:
  6.               exec >>/chroot/log2/recv`date '+%Y%m%d'`.log 2>&1
  7.                break;
  8.     .......
  9.     case 12:
  10.                exec >>/chroot/log12/recv`date '+%Y%m%d'`.log 2>&1
  11.                break;
  12.     default:
  13.                echo  ERROR;
  14. }
复制代码
我不会shell语法呢,只是看了看懂一点点,请给我指点一下,或是给我一点点资料看看,我刚才看了shell 基础和13问,没看到这关于switch相关的。

论坛徽章:
0
2 [报告]
发表于 2004-12-16 11:03 |只看该作者

shell 下面如何写swith这样的冬冬

case Value in
  Reg1)
      cmd1
      ....
      ;;
  Reg2)
      cmd2
      ....
      ;;
   *)
      cmd_default
      ;;
esac

论坛徽章:
1
荣誉会员
日期:2011-11-23 16:44:17
3 [报告]
发表于 2004-12-16 12:40 |只看该作者

shell 下面如何写swith这样的冬冬

switch是csh的一个多条件选择结构,
37,switch
格式;

源码:


switch (test-string)
case pattern:
commands
breaksw
case pattern:
commands
breaksw
default:
commands
breaksw
endsw

switch结构在几个 可能的选项中进行选择.此结构与BASH中的case结构非常类似
通过把字符串与几 个可能的模式进行选择,每个可能的模式都与一系列命令相关
联,如果没有相匹配的项,则执行相关的命令,.switch结构以关键词switch和放在
圆括号中的test-string开始,字符串常由变量求值导出,然后是一系列的模式,每个
模式pattern前是关键词case,以冒号:结束,冒号后列出与选择有关的commands,以
breaksw终止command,在所有被列出的模式之后,关键词endsw结束switch结构,注意,
每个测试表达式的 命令组的最后一个命令是breaksw,每个测试表达式被逐一测试,
直到找到相匹配的 内容,如果没有找到相匹配的项,则执行默认项default.用关键词
default表示默认选择,default项是可选的.但是它有助于通知用户没有匹配的测试
字符串.举例:

源码:


lschoice
#
echo s.List sizes
echo l.List files infomation
echo c.List C files
echo -n "lease enter choice:"
set choice=$ switch ($choice)
case s:
ls -s
breaksw
case l:
ls -l
breaksw
case c:
ls *.c
breaksw
default:
echo Invalid Option
breaksw
endsw

http://blog.chinaunix.net/index.php?op=ViewArticle&articleId=608&blogId=126

论坛徽章:
0
4 [报告]
发表于 2004-12-16 13:56 |只看该作者

shell 下面如何写swith这样的冬冬

谢谢二位的帮助,我会写了。

论坛徽章:
0
5 [报告]
发表于 2004-12-16 20:21 |只看该作者

shell 下面如何写swith这样的冬冬

有个问题,如果想实现你的目的用这样的代码岂不更好(当然学语法还是好的,我只是提出解决问题更简易的代码)

  1. #!/bin/ksh
  2. logpath=/chroot
  3. if [ ! -d "${logpath}/log$(date +%m)" ];
  4. then
  5.        mkdir "${logpath}/log$(date +%m)"
  6. fi
  7. >"${logpath}/log$(date +%m)"/recv`date '+%Y%m%d'`.log 2>&1
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP