1 | test
|
2 | ===
|
3 |
|
4 | 执行条件表达式。
|
5 |
|
6 | ## 概要
|
7 |
|
8 | ```shell
|
9 | test [expr]
|
10 | ```
|
11 |
|
12 | ## 主要用途
|
13 |
|
14 | - 执行条件表达式。
|
15 |
|
16 | ## 参数
|
17 |
|
18 | ### 文件操作符:
|
19 |
|
20 | ```shell
|
21 | -a FILE 如果文件存在,则为true。
|
22 | -b FILE 如果文件是块特殊的,则为true。
|
23 | -c FILE 如果文件是特殊字符,则为true。
|
24 | -d FILE 如果文件是目录,则为true。
|
25 | -e FILE 如果文件存在,则为true。
|
26 | -f FILE 如果文件存在并且是常规文件,则为true。
|
27 | -g FILE 如果文件是set-group-id,则为true。
|
28 | -h FILE 如果文件是符号链接,则为true。
|
29 | -L FILE 如果文件是符号链接,则为true。
|
30 | -k FILE 如果文件的粘滞位(sticky)设置了,则为true。
|
31 | -p FILE 如果文件是命名管道,则为true。
|
32 | -r FILE 如果您可以读取文件,则为true。
|
33 | -s FILE 如果文件存在且不为空,则为true。
|
34 | -S FILE 如果文件是套接字,则为true。
|
35 | -t FD 如果在终端上打开FD,则为True。
|
36 | -u FILE 如果文件是set-user-id,则为true。
|
37 | -w FILE 如果文件可写,则为true。
|
38 | -x FILE 如果您可以执行文件,则为true。
|
39 | -O FILE 如果文件有效地归您所有,则为true。
|
40 | -G FILE 如果文件有效地归您的组所有,则为true。
|
41 | -N FILE 如果文件自上次读取以来已被修改,则为true。
|
42 |
|
43 | FILE1 -nt FILE2 根据修改日期,如果 file1 比 file2 新,则为true。
|
44 | FILE1 -ot FILE2 根据修改日期,如果 file1 比 file2 旧,则为true。
|
45 | FILE1 -ef FILE2 如果 file1 为 file2 的硬链接,则为true。
|
46 | ```
|
47 | ### 字符串运算符:
|
48 |
|
49 | ```shell
|
50 | -z STRING 如果字符串为空,则为true。
|
51 | -n STRING 如果字符串不为空,则为true。
|
52 | STRING 如果字符串不为空,则为true。
|
53 | STRING1 = STRING2 如果字符串相等,则为true。
|
54 | STRING1 != STRING2 如果字符串不相等,则为true。
|
55 | STRING1 < STRING2 如果 STRING1 的字典排序在 STRING2 之前,则为true。
|
56 | STRING1 > STRING2 如果 STRING1 在字典排序在 STRING2 之后,则为true。
|
57 | ```
|
58 |
|
59 | ### 其他运算符:
|
60 |
|
61 | ```shell
|
62 | -o OPTION 如果启用了shell选项OPTION,则为true。
|
63 | -v VAR 如果设置了shell变量VAR,则为true。
|
64 | -R VAR 如果设置了shell变量VAR并且是变量引用,则为true。
|
65 | !EXPR 如果expr为假,则为true。
|
66 | EXPR1 -a EXPR2 如果expr1和expr2都为true,则为true。
|
67 | EXPR1 -o EXPR2 如果expr1或expr2为true,则为true。
|
68 | arg1 OP arg2 算术表达式测试; OP是 -eq,-ne,-lt,-le,-gt,-ge 中的一个;算术表达式为真时返回true。
|
69 | ```
|
70 |
|
71 | ## 返回值
|
72 |
|
73 | 如果表达式执行结果为成功时返回0,当表达式执行结果为失败或给出非法参数时返回1。
|
74 |
|
75 | ## 例子
|
76 |
|
77 | ```shell
|
78 | # 执行条件表达式并显示返回值。
|
79 | [root@pc root]$ test ! "abc" == 123; echo $?
|
80 | 0
|
81 |
|
82 | # 等价形式,注意:方括号 [ 后面的空格以及方括号 ] 前面的空格。
|
83 | [root@pc root]$ [ ! "abc" == 123 ]; echo $?
|
84 | 0
|
85 |
|
86 | [root@pc root]$ [[ ! "abc" == 123 ]]; echo $?
|
87 | 0
|
88 | ```
|
89 |
|
90 |
|
91 | ### 注意
|
92 |
|
93 | 1. 该命令等价于 `[`。
|
94 | 2. 编写 bash 条件表达式可用内建命令 `test`, `[` ,组合命令 `[[`;
|
95 | > - 关于条件表达式可以查看[这里](http://www.gnu.org/software/bash/manual/html_node/Bash-Conditional-Expressions.html#Bash-Conditional-Expressions);
|
96 | > - 关于内建命令的索引可以查看[这里](http://www.gnu.org/software/bash/manual/html_node/Builtin-Index.html#Builtin-Index);
|
97 | > - 关于组合命令的索引可以查看[这里](http://www.gnu.org/software/bash/manual/html_node/Reserved-Word-Index.html#Reserved-Word-Index)
|
98 | 3. 该命令是bash内建命令,相关的帮助信息请查看`help`命令。
|
99 |
|
100 |
|
101 |
|