|
|
1.1 root 1: .TH TEST 1
2: .CT 1 shell
3: .SH NAME
4: test, [, newer \- condition commands
5: .SH SYNOPSIS
6: .B test
7: .I expr
8: .PP
9: \fB[\fR
10: .I expr
11: \fB]\fR
12: .PP
13: .B newer
14: .I file1 file2
15: .SH DESCRIPTION
16: .I Test
17: evaluates the expression
18: .IR expr .
19: If the value is true the exit status is 0; otherwise the
20: exit status is nonzero.
21: If there are no arguments the exit status is nonzero.
22: .PP
23: The following primitives are used to construct
24: .IR expr .
25: .TP \w'\fL-t\fI\ fildes\ 'u
26: .BI -r " file"
27: True if the file exists (is accessible) and is readable.
28: .PD0
29: .TP
30: .BI -w " file"
31: True if the file exists and is writable.
32: .TP
33: .BI -x " file"
34: True if the file exists and has execute permission.
35: .TP
36: .BI -e " file
37: True if the file exists.
38: .TP
39: .BI -f " file"
40: True if the file exists and is a plain file.
41: .TP
42: .BI -d " file"
43: True if the file exists exists and is a directory.
44: .TP
45: .BI -c " file"
46: True if the file exists and is a character special file.
47: .TP
48: .BI -b " file"
49: True if the file exists and is a block special file.
50: .TP
51: .BI -L " file"
52: True if the file is a symbolic link.
53: .TP
54: .BI -u " file"
55: True if the file exists and has set userid permission.
56: .TP
57: .BI -g " file"
58: True if the file exists and has set groupid permission.
59: .TP
60: .BI -s " file"
61: True if the file exists and has a size greater than zero.
62: .TP
63: .BI -t " fildes
64: True if the open file whose file descriptor number is
65: .I fildes
66: (1 by default)
67: is associated with a terminal device.
68: .TP
69: .B -S
70: True if the effective userid is zero.
71: .TP
72: .IB s1 " = " s2
73: True
74: if the strings
75: .I s1
76: and
77: .I s2
78: are identical.
79: .TP
80: .IB s1 " != " s2
81: True
82: if the strings
83: .I s1
84: and
85: .I s2
86: are not identical.
87: .TP
88: s1
89: True if
90: .I s1
91: is not the null string.
92: (Deprecated.)
93: .TP
94: .BI -z " s1"
95: True if the length of string
96: .I s1
97: is zero.
98: .TP
99: .IB n1 " -eq " n2
100: True if the integers
101: .I n1
102: and
103: .I n2
104: are arithmetically equal.
105: Any of the comparisons
106: .BR -ne ,
107: .BR -gt ,
108: .BR -ge ,
109: .BR -lt ,
110: or
111: .BR -le
112: may be used in place of
113: .BR -eq .
114: The (nonstandard) construct
115: .BI -l " string,
116: meaning the length of
117: .I string,
118: may be used in place of an integer.
119: .PD
120: .PP
121: These primaries may be combined with the
122: following operators:
123: .TP
124: .B !
125: unary negation operator
126: .PD0
127: .TP
128: .B -o
129: binary
130: .I or
131: operator
132: .TP
133: .B -a
134: binary
135: .I and
136: operator; higher precedence than
137: .BR -o
138: .TP
139: .BI "( " expr " )"
140: parentheses for grouping.
141: .PD
142: .PP
143: Notice that all the operators and flags are separate
144: arguments to
145: .IR test .
146: Notice also that parentheses are meaningful
147: to the Shell and must be escaped.
148: .PP
149: .B [
150: is a synonym for
151: .I test,
152: except that
153: .B [
154: requires a closing
155: .BR ] .
156: .PP
157: .I Newer
158: returns a zero exit code if
159: .I file1
160: exists and
161: .I file2
162: does not, or if
163: .I file1
164: and
165: .I file2
166: both exist and
167: .I file1
168: was modified at least as recently
169: as
170: .IR file2 .
171: It returns a non-zero return code otherwise.
172: .SH EXAMPLES
173: .I Test
174: is a dubious way to check for specific character strings:
175: it uses a process to do what a shell case statement can do.
176: The first example is not only inefficient but wrong, because
177: .I test
178: understands the purported string
179: .B \&"-c"
180: as an option.
181: Furthermore
182: .B $1
183: might be empty.
184: .IP
185: .EX
186: if test $1 = "-c" # wrong!
187: then echo OK
188: fi
189: .EE
190: .LP
191: A correct way is
192: .IP
193: .EX
194: case "$1" in
195: -c) echo OK
196: esac
197: .EE
198: .PP
199: Test whether
200: .L abc
201: is in the current directory.
202: .IP
203: .B test -e abc -o -L abc
204: .SH "SEE ALSO"
205: .IR sh (1),
206: .IR find (1)
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.