shell流程控制与其他语言有一点不同就是它的流程控制不可为空,即else分支没有语句执行,就不要写这个else。本文介绍if语法使用方法、特殊文本表达式-z -n -f -eq -ne -lt等及shell的逻辑表达式用法。
1.if语法
条件表达式一定要有fi结尾!!!
-
if语法格式
命令执行成功,返回0 (比如grep ,找到匹配)
执行失败,返回非0 (grep,没找到匹配)if语句也可以写成一行,这种方式适用于终端命令提示符。
-
if else 语法格式
-
if else-if else
如下示例:
2.if简化
最常用的if简化就是使用&&
和||
表示。
-
&& :表示如果符号&&前面表达式为真,则执行&&符号后面的表达式。
#检查/var/run/dhcpd.pid文件是否存在,如果存在就删掉 #-f表示文件存在 [ -f /var/run/dhcpd.pid ] && rm /var/run/dhcpd.pid
-
||:表示如果符号||前面表达式为假,则执行||符号后面的表达式。
#检验文件/usr/sbin/dhcpd是否存在,如果不存在就退出 [ -f /usr/sbin/dhcpd ] || exit 0
-
使用if简化 和$1,$2,$3来检测参数,不合理就调用help。
#如果第一个参数不存在(-z 字符串长度为0 ) [ -z "$1" ] && help #如果第一个参数是-h,就显示help [ "$1" = "-h" ] && help #上述等号=两边要有空格才表示=是等号
3.条件表示式
文本表达式比较常用!!!
- if [ -f file ] :如果文件存在
- if [ -d … ] :如果目录存在
- if [ -s file ] :如果文件存在且非空
- if [ -r file ] :如果文件存在且可读
- if [ -w file ] :如果文件存在且可写
- if [ -x file ] : 如果文件存在且可执行
整数条件表达式,大于,小于,shell里没有> 和< ,会被当作尖括号,只有-ge,-gt,-le,lt!!!
4.逻辑表达式
-
逻辑非 !
非!:表示与条件表达式相反。if [ ! 表达式 ]
if [ ! -d
$num
] :表示如果不存在目录$num -
逻辑或 -o
表示条件表达式的或。if [ 表达式1 –o 表达式2 ]
-
逻辑与 –a
表示条件表达式的与。if [ 表达式1 –a 表达式2 ]
逻辑符号正常的接其他表达式,没有任何括号(),直接并列写即可!!!
如下:
每天进步一点点、充实一点点、加油!!!