1.常用测试表达式

    test expression

    [ expression ] expression两端必须用空格隔开

    ` expression `

2.常用测试类型

    (1)数值测试

         -eq:相等(equal)
         -ne:不相等(not equal)
         -gt:大于(greater than)
         -lt:小于(less than)
         -ge:大于等于
         -le:小于等于

      (2)字符测试

           =:字符串相等

           =~:左侧是字符串,右侧是模式,判断字符串能否被模式锁匹配,通常只在` `中使用,模式中不使用引号

           ==:同=

         !=:不等

          >:按字典顺序排序,字符串str1在字符串str2之后

          <:按字典顺序排序,字符串str1在字符串str2之前

          -n:字符串是否不空,不空为真,空为假

          -z:字符串是否不空,空为真,不空为假

       (3)逻辑操作符

           -a:逻辑与,操作符两边均为真,结果为真,否则为假

           -o:逻辑或,操作符两边一边为真,结果为真,否则为假

          !:逻辑否,条件为假,结果为真

       (4)文件状态测试测试

           a.常用文件类型测试

               -e:是否存在
               -d:目录
               -f:普通文件
               -b:块设备

               -c:字符设备

               -S:套接字文件

               -p:管道文件

               -L:链接文件,同-h

            b.常用文件权限测试

               -r:是否具有可读属性
               -w:是否具有可写属性
               -x:是否具有可执行属性
               -s:该文件是否为非空白文件,-s表示的是文件存在,且非空

            c.两个文件比较

               -nt:文件file_a是否比file_b新
               -ot:文件file_a是否比file_b旧
               -ef:判断两个文件是否为同一文件,可用于判断硬连接。(主要判断两个文件是否均指向同一个inode)    

       (5)特殊字符

           $0 是脚本本身的名字
           $n 是传递给该shell脚本的第n个参数
           $# 是传给脚本的参数个数
           $@ 是传给脚本的所有参数的列表
           $* 是以一个单字符串显示所有向脚本传递的参数,与位置变量不同,参数可超过9个
           $$ 是脚本运行的当前进程ID号
           $? 是显示最后命令的退出状态,0表示没有错误,其他表示有错误(1-255)