echo $?
0代表成功,非0代表不成功
测试表达式
数值比较
-eq 等于
返回值是1,说明2不等于3
-ne 不等于
返回值是0 说明2不等于3
还可以直接使用中括号,而不需要输入test关键字
返回值为1 说明2等于2
-gt 左侧是否大于右侧
左侧的2大于右侧的1
-lt 左侧是否小于右侧
左侧2不小于右侧1
剩下还有 le(小于等于) 和ge(大于等于)
字符串比较
注意:在比较字符串的时候,最好使用双中括号,如果有变量最好用双引号引住
> 是否大于 < 是否小于
为什么a要小于b?因为字符在比较时,使用的是ASCII值
!= 不等于
下面这个比较符很少见哈,叫做模式匹配
左侧的字符串是否可以被右侧的匹配符匹配到
这样就算匹配上了。两次比对,第一次成功,第二次失败
如果要让第二次也成功可以这么写
-z "STRINGS" 判断STRINGS字符串是否为空
-n "STRINGS"判断 STRINGS字符串是否不空
正因为变量name值为空,所以-n的返回值为1.
脚本返回值
默认是脚本中最后一条命令的状态返回值,管理员可以自定义脚本返回值
exit[n] n就是返回的值,shell脚本中遇到exit就会退出程序
文件测试
查看文件是否存在 -e
查看文件是否为块设备 -b
查看文件是否为字符设备文件
-c
查看文件是否为普通文件
-f
查看文件是否为目录文件
-d
查看文件是否为符号链接文件
-h/-L
查看文件是否为管道文件
-p
查看文件是否为套接字文件
-S
查看文件是否存在且对当前用户可读
-r
查看文件是否存在且对当前用户可写
-w
查看文件是否存在且对当前用户可执行
-x
查看文件是否存在且拥有SGID
-g
查看文件是否有SUID -u
查看文件是否有STICKY -k
查看文件是否存在而且有内容-s
有文件,但是文件里面没有内容
查看文件自上次读取后是否被修改过
-N
查看当前用户是否是指定文件的属主 -O
查看当前用户是否属于指定文件的属组 -G
双目测试
-ef 两个文件是否是指向同一个文件的两个硬链接文件
-nt 左边的文件是否比右边的文件新? 时间以最近一次修改时间为主
-ot 左边的文件是否比右边的文件旧? 时间以最近一次修改时间为主
aaaa.text 比fstab.1新
fstab.1比aaaa.text文件旧
组合测试
command1 && command 2
如果第一个命令错了,就不运行第二个命令了
如果第一个命令对了,第二个命令继续运行
command1 || command2
如果第一个命令错了,第二个命令就继续运行
如果第一个命令对了,就不运行第二个命令了。
&& 等同于-a 注意 如果是-a的参数那么表达式两边是单的中括号
|| 等同于 -o
非的命令
!command1
原文地址:http://blog.51cto.com/yueyue207/2090062