选择结构是程序中带有判断的一种逻辑结构,只有符合一定的条件,程序体才会被执行.
Linux shell 选择结构分类:
- if-then控制结构
- case--esac控制结构
一,if控制结构
基本上和高级语言类似,可以没有else,可以嵌套使用.
if [ 条件 ];then #满足条件执行then里面的语句
语句1...
else
语句2...
fi #结束if
条件表达式
1,文件表达式
if [ -f file ] 如果文件存在
if [ -d ... ] 如果目录存在
if [ -s file ] 如果文件存在且非空
if [ -r file ] 如果文件存在且可读
if [ -w file ] 如果文件存在且可写
if [ -x file ] 如果文件存在且可执行
2,整数变量表达式
if [ int1 -eq int2 ] 如果int1等于int2
if [ int1 -ne int2 ] 如果不等于
if [ int1 -ge int2 ] 如果>=
if [ int1 -gt int2 ] 如果>
if [ int1 -le int2 ] 如果<=
if [ int1 -lt int2 ] 如果<
3,字符串变量表达式
If [ $a = $b ] 如果string1等于string2
字符串允许使用赋值号做等号
if [ $string1 != $string2 ] 如果string1不等于string2
if [ -n $string ] 如果string 非空(非0),返回0(true)
if [ -z $string ] 如果string 为空
if [ $sting ] 如果string 非空,返回0 (和-n类似)
逻辑表达式
逻辑非 ! 条件表达式的相反
if [ ! 表达式 ]
if [ ! -d $num ] 如果不存在目录$num
逻辑与 –a 条件表达式的并列
if [ 表达式1 –a 表达式2 ]
逻辑或 -o 条件表达式的或
if [ 表达式1 –o 表达式2 ]
---------------------------------------------------------------------------------------------
case语句适用于需要进行多重分支的应用情况,它也是选择结构中常用的一种控制结构。
case分支语句的格式如下:
case $变量名 in # 严格掌握其语法
模式1) # 右括号不能省
命令序列1
;; # 两分号不能省
模式2)
命令序列2
;;
*)
默认执行的命令序列
;;
esac #结尾反写case表示结束。