Linux Shell 条件语句

在命令行下测试条件语句:

img

返回的是 0 表示成功,其它表示不成功。上图说明文件没有执行的权限。

test 语法

  1. 判断表达式

    if test 表达式为真

    if test ! 表达式为假

    test 表达式 1 –a 表达式 2;两个表达式都为真

    test 表达式 1 –o 表达式 2;两个表达式有一个为真

  2. 判断字符串

    test –n 字符串;字符串的长度非零

    test –z 字符串;字符串的长度为零

    test 字符串 1=字符串 2;字符串相等

    test 字符串 1!=字符串 2;字符串不等

  3. 判断整数

    test 整数 1 –eq 整数 2;整数相等

    test 整数 1 –ge 整数 2;整数 1 大于等于整数 2

    test 整数 1 –gt 整数 2;整数 1 大于整数 2

    test 整数 1 –le 整数 2;整数 1 小于等于整数 2

    test 整数 1 –lt 整数 2;整数 1 小于整数 2

    test 整数 1 –ne 整数 2;整数 1 不等于整数 2

  4. 判断文件

    test File1 –ef File2;两个文件具有同样的设备号和 i 结点号

    test File1 –nt File2;文件 1 比文件 2 新

    test File1 –ot File2;文件 1 比文件 2 旧

    test –b File;文件存在并且是块设备文件

    test –c File;文件存在并且是字符设备文件

    test –d File;文件存在并且是目录

    test –e File;文件存在

    test –f File;文件存在并且是正规文件

    test –g File;文件存在并且是设置了组 ID

    test –G File;文件存在并且属于有效组 ID

    test –h File;文件存在并且是一个符号链接(同 -L)

    test –k File;文件存在并且设置了 sticky 位

    test –b File;文件存在并且是块设备文件

    test –L File;文件存在并且是一个符号链接(同 -h)

    test –o File;文件存在并且属于有效用户 ID

    test –p File;文件存在并且是一个命名管道

    test –r File;文件存在并且可读

    test –s File;文件存在并且是一个套接字

    test –t FD;文件描述符是在一个终端打开的

    test –u File;文件存在并且设置了它的 set-user-id 位

    test –w File;文件存在并且可写

    test –x File;文件存在并且可执行