Linux-shell编程之条件判断与流程控制

来源:互联网 发布:广西横县网络电视 编辑:程序博客网 时间:2024/05/21 15:44

条件判断:

两种判断格式

test 选项 表达式    或  [ 选项 表达式]

例如:test  -e /root/install.log     或    [ -e /root/install.log ]

多种判断类型:

1按照文件类型判断

 1.1   -b 文件  判断该文件是否存在,并且是否为块设备文件,是则返回真

 1.2   -c 文件  判断该文件是否存在,并且是否为字符设备文件,是则返回真

 1.3   -d 文件  判断该文件是否存在,并且是否为目录文件,是则返回真

 1.4   -e 文件  判断该文件是否存在,存在则返回真

 1.5   -f  文件  判断该文件是否存在,并且是否为普通文件,是则返回真

 1.6   -L 文件  判断该文件是否存在,并且是否为符号链接文件,是则返回真

 1.7   -p 文件  判断该文件是否存在,并且是否为管道文件,是则返回真

 1.8   -s 文件  判断该文件是否存在,并且是否为非空,非空则为真

 1.9   -S 文件  判断该文件是否存在,并且是否为套接字文件,是则为真

2按照文件权限判断

 2.1   -r  文件  判断该文件是否存在,并且是否该文件有读权限,有则为真 

 2.2   -w 文件  判断该文件是否存在,并且是否该文件有写权限,有则为真

 2.3   -x  文件  判断该文件是否存在,并且是否该文件有执行权限,有则为真

 2.4   -u  文件  判断该文件是否存在,并且是否该文件有SUID权限,有则为真

 2.5   -g  文件  判断该文件是否存在,并且是否该文件有SGID权限,有则为真

 2.5   -k  文件   判断该文件是否存在,并且是否该文件有SBIT权限,有则为真

3两个文件之间比较

 3.1 文件1 -nt 文件2  判断文件1的修改时间是否比文件2的新,新则为真

 3.2  文件1 -ot 文件2 判断文件1的修改时间是否比文件2的旧,旧则为真

 3.3  文件1 -ef 文件2  判断文件1是否和文件2的Inode号一致,(用于判断硬链接)

4两个整数之间比较

 4.1 整数1 -eq 整数2  判断两个数是否相等,相等则为真

 4.2 整数1 -ne 整数2  判断两个数不相等,不相等则为真

 4.3 整数1 -gt 整数2  判断整数1是否大于整数2  大于则为真

 4.4 整数1 -lt 整数2   判断整数1是否小于整数2  于则为真

 4.5 整数1 -ge 整数2   判断整数1是否大于等于整数2  大于等于则为真

 4.6 整数1 -le 整数2   判断整数1是否小于等于整数2  小于等于则为真

5字符串判断

 5.1  -z 字符串   判断字符串是否为空,为空则返回真

 5.2  -n 字符串   判断字符串是否为非空,非空则为真

 5.3 字符串1==字符串2 判断两个字符串是否相等,相等则为真

 5.4 字符串1!=字符串2  判断两个字符串是否不相等,相等则为真

6多重条件判断

 6.1 判断1 -a 判断2  逻辑与,判断1和判断2都成立,最终结果才成立

 6.2 判断1 -o 判断2  逻辑或,判断1和判断2有一个成立,最终结果就成立

 6.3 !判断   逻辑非  在原有判断式的结果上取反 


流程控制:

(1)单分支if条件语句

if [条件判断式];then

程序

fi

或者

if [条件判断式]

 then

 程序

fi

(2)双分支if条件语句

if [条件判断式]

 then

 条件成立时执行的代码

 else

 条件不成立时执行的代码

fi

(3)多分支if条件语句

if [条件判断式1]

 then

 程序1

elif [条件判断式2]

 then

 程序2

else 

 程序3

fi

(4)多分支case语句

case $变量名  in

 "值1")

  执行代码1

;;

"值2")

  执行代码2

;;

此处省略好多分支

*)

执行默认代码(当没有分支满足变量时)

;;

esac

(5)for循环

5.1语法1

for 变量名  in  值1 值2 值3 ...

 do

  要执行的代码

 done

5.2语法二

s=0

for (( i=1;i<=100;i=i+1 ))

 do

  s=$(( $s+$i ))

 done

echo $s

(6)while循环(条件不成立时终止循环)

 while [判断式]

 do

 要执行的代码

 done

(7)until 循环(条件成立时终止循环)

 until [判断式]

 do

 要执行的代码

 done



0 0