现在的位置: 首页 > 综合 > 正文

shell 脚本和case例子

2013年02月06日 ⁄ 综合 ⁄ 共 1291字 ⁄ 字号 评论关闭

case和select结构在技术上说并不是循环, 因为它们并不对可执行代码块进行迭代. 但是和循环相似的是, 它们也依靠在代码块顶部或底部的条件判断来决定程序的分支. 

在代码块中控制程序分支 

case (in) / esac 

    在shell中的case结构与C/C++中的switch结构是相同的. 它允许通过判断来选择代码块中多条路径中的一条. 它的作用和多个if/then/else语句的作用相同, 是它们的简化结构, 特别适用于创建菜单. 

Ruby代码  收藏代码
  1. case  "$variable"  in   
  2.   
  3.  "$condition1"  )  
  4.  command...  
  5.  ;;  
  6.   
  7.  "$condition2"  )  
  8.  command...  
  9.  ;;  
  10.   
  11. esac  
  12. Note     

    

     

        * 

          对变量使用""并不是强制的, 因为不会发生单词分割. 
        * 

          每句测试行, 都以右小括号)来结尾. 
        * 

          每个条件判断语句块都以一对分号结尾 ;;. 
        * 

          case块以esac (case的反向拼写)结尾. 

    例子 10-24. 使用case 

Ruby代码  收藏代码
  1. #!/bin/bash   
  2. # 测试字符串范围.   
  3.   
  4. echo; echo "Hit a key, then hit return."   
  5. read Keypress  
  6.   
  7. case  "$Keypress"  in   
  8.   [[:lower :]]   ) echo "Lowercase letter" ;;  
  9.   [[:upper :]]   ) echo "Uppercase letter" ;;  
  10.   [0-9]         ) echo "Digit" ;;  
  11.   *             ) echo "Punctuation, whitespace, or other";;  
  12. esac      #  允许字符串的范围出现在[中括号]中,   
  13.           #+ 或者出现在POSIX风格的[[双中括号中.   
  14.   
  15. #  在这个例子的第一个版本中,   
  16. #+ 测试大写和小写字符串的工作使用的是   
  17. #+ [a-z] 和 [A-Z].   
  18. #  这种用法在某些特定场合的或某些Linux发行版中不能够正常工作.   
  19. #  POSIX 的风格更具可移植性.   
  20. #  感谢Frank Wang指出了这点.   
  21.   
  22. #  练习:   
  23. #  -----   
  24. #  就像这个脚本所表现出来的, 它只允许单次的按键, 然后就结束了.   
  25. #  修改这个脚本, 让它能够接受重复输入,   
  26. #+ 报告每次按键, 并且只有在"X"被键入时才结束.   
  27. #  暗示: 将这些代码都用"while"循环圈起来.   
  28.   
  29. exit 0  

    例子 10-25. 使用case来创建菜单 

Ruby代码  收藏代码
  1. #!/bin/bash   
  2.   
  3. # 未经处理的地址资料   
  4.   
  5. clear # 清屏.   

抱歉!评论已关闭.