Linux Shell编程(19)——测试与分支

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


在代码块中控制程序分支


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


?"$condition1" ) 
?command... 
?;; 


?"$condition2" ) 
?command... 
?;; 


esac




对变量使用""并不是强制的,因为不会发生单词分离.
每句测试行,都以右小括号)结尾.
每个条件块都以两个分号结尾;;.
case块的结束以esac(case的反向拼写)结尾.


例子:使用case
#!/bin/bash
# 测试字符串范围


echo; echo "Hit a key, then hit return."
read Keypress


case "$Keypress" in
  [[:lower:]]   ) echo "Lowercase letter";;
  [[:upper:]]   ) echo "Uppercase letter";;
  [0-9]         ) echo "Digit";;
  *             ) echo "Punctuation, whitespace, or other";;
esac      #  允许字符串的范围出现在[]中,
          #+ 或者POSIX风格的[[中.


#  在这个例子的第一个版本中,
#+ 测试大写和小写字符串使用的是
#+ [a-z] 和 [A-Z].
#  这种用法将不会在某些特定的场合或Linux发行版中正常工作.


exit 0




原文地址:https://www.cnblogs.com/new0801/p/6176861.html