test:测试字符串、文件状态、数字
基础格式:
test 文件名
[ 文件名 ] //要加空格
可以加上条件语句,实现不同的测试方法
1.文件测试
1.1 按文件类型
-e 文件名 文件是否存在
-s 文件名 是否为非空
-b 文件名 块设备文件
-c 文件名 字符设备文件
-d 文件名 目录文件
-f 文件名 普通文件
-L 文件名 软链接文件
-S 文件名 套接字文件
-p 文件名 管道文件
1.2 按文件权限
-r 文件名 可读
-w 文件名 可写
-x 文件名 可执行
1.3 两文件相互比较
文件1 -nt 文件2 文件1的修改时间是否比文件2新
文件1 -ot 文件2 文件1的修改时间是否比文件2旧
文件1 -ef 文件2 两个文件的inode节点号是否一样,用于判断是否是硬链接
#!/bin/bash
read a //获取键盘输入的字符串,赋值于a
test -e $a //检测系统内是否存在此文件
echo"$?" //上条语句为真 则返回0
2. 字符串测试
s1 = s2 测试两个字符串的内容是否完全一样
s1 != s2 测试两个字符串的内容是否有差异
-z s1 测试s1 字符串的长度是否为0
#!/bin/bash
test "asd" = "asd" 有空格
echo"$?" //上条语句为真 则返回0
3. 数字测试
a -eq b 测试a与b是否 相等
-ne 不相等
-gt 大于
-ge 大于等于
-lt 小于
-le 等于
#!/bin/bash
read a b //获取两个变量
test $a -eq $b // $ 取变量的内容
echo"$?" //上条语句为真 则返回0
4. 复合测试
4.1 命令执行控制 (c语言的逻辑与、逻辑或)
&& 逻辑与
|| 逻辑或
多个独立的测试语句,用&|连接(多个test)
#!/bin/bash
test -e /home && test -d /home
根目录下的home ,既要存在,还要是目录文件
4.2 多重条件判断
一个test,判断多个条件
-a 同时成立
-o 任意成立
! 取反
#!/bin/bash
test -e /home -a -d /home
同时成立