shell中的if语法

字符串测试

= 两个字符串相等

!= 两个字符串不相等

-Z  空串

-n  非空串

示例:[ -Z $SHELL ]


数值测试

-eq 数值相等(equal to)

-ne 数值不相等

-gt 第一个数大于第二个数

-lt 第一个数小于第二个数

-le 第一个数小于等于第二个数

-ge 第一个数大于等于第二个数

示例:[ "10" -eq "12" ]


其他语言不同,Shell Script中if语句的条件部分要以分号来分隔。第三行中的[]表示条件测试,常用的条件测试有下面几种:

[ -f "$file" ] 判断$file是否是一个文件

[ $a -lt 3 ] 判断$a的值是否小于3,同样-gt和-le分别表示大于或小于等于

[ -x "$file" ] 判断$file是否存在且有可执行权限,同样-r测试文件可读性

[ -n "$a" ] 判断变量$a是否有值,测试空串用-z

[ "$a" = "$b" ] 判断$a和$b的取值是否相等

[ cond1 -a cond2 ] 判断cond1和cond2是否同时成立,-o表示cond1和cond2有一成立

要注意条件测试部分中的空格。在方括号的两侧都有空格,在-f、-lt、=等符号两侧同样也有空格。如果没有这些空格,Shell解释脚本的时候就会出错。

$#表示包括$0在内的命令行参数的个数。在Shell中,脚本名称本身是$0,剩下的依次是$0、$1、$2…、${10}、${11},等等。$*表示整个参数列表,不包括$0,也就是说不包括文件名的参数列表。


linux if语句内判断参数

–b 当file存在并且是块文件时返回真  
-c 当file存在并且是字符文件时返回真  
-d 当pathname存在并且是一个目录时返回真 
-e 当pathname指定的文件或目录存在时返回真  
-f 当file存在并且是正规文件时返回真  
-g 当由pathname指定的文件或目录存在并且设置了SGID位时返回为真  
-h 当file存在并且是符号链接文件时返回真,该选项在一些老系统上无效  
-k 当由pathname指定的文件或目录存在并且设置了“粘滞”位时返回真  
-p 当file存在并且是命令管道时返回为真  
-r 当由pathname指定的文件或目录存在并且可读时返回为真  
-s 当file存在文件大小大于0时返回真  
-u 当由pathname指定的文件或目录存在并且设置了SUID位时返回真  
-w 当由pathname指定的文件或目录存在并且可执行时返回真。一个目录为了它的内容被访问必然是可执行的。  
-o 当由pathname指定的文件或目录存在并且被子当前进程的有效用户ID所指定的用户拥有时返回真

你可能感兴趣的:(linux,shell,File,测试,脚本,语言)