第14章 测试和判断
14.1 测试
程序运行中经常需要根据实际情况来运行特定的命令或代码段。比如,判断某个文件或目录是否存在,如果文件或目录不存在,可能需要首先创建文件或目录。举例说,要判断文件varlog/message文件是否存在,可以先ls该文件,然后用$?来判断,如下所示:
- #ls
一个存在的文件
[root@localhost ~]# ls varlog/messages
varlog/messages
#
如果ls
成功,则$?
返回值为0
,说明该文件存在
[root@localhost ~]# echo $?
0
#ls
一个不存在的文件,命令本身会报错
[root@localhost ~]# ls varlog/messages01
ls: varlog/messages01: No such file or directory
#
这里$?
的返回值是非0
的,在不考虑文件权限的情况下,返回非0
值说明文件是不存在的
[root@localhost ~]# echo $?
2
上述的办法确实是一种办法,但是这意味着在很多情况下都需要自己来实现这个“判断”的过程,判断为真则返回0,为假则返回非0值。这种判断行为被称作“测试”。
实际上Shell已经实现了很多测试功能,这些测试语句不但使用起来非常简单,还能在少写代码的情况下实现同样的功能,最重要的是能让代码看起来更为清晰。