|
|
1.1 root 1: .TH TEST 1
2: .SH NAME
3: test \- set status according to condition
4: .SH SYNOPSIS
5: .B test
6: .I expr
7: .SH DESCRIPTION
8: .I Test
9: evaluates the expression
10: .IR expr .
11: If the value is true the exit status is null; otherwise the
12: exit status is non-null.
13: If there are no arguments the exit status is non-null.
14: .PP
15: The following primitives are used to construct
16: .IR expr .
17: .TP "\w'\fIn1 \fL-eq \fIn2\fLXX'u"
18: .BI -r " file"
19: True if the file exists (is accessible) and is readable.
20: .PD0
21: .TP
22: .BI -w " file"
23: True if the file exists and is writable.
24: .TP
25: .BI -x " file"
26: True if the file exists and has execute permission.
27: .TP
28: .BI -e " file
29: True if the file exists.
30: .TP
31: .BI -f " file"
32: True if the file exists and is a plain file.
33: .TP
34: .BI -d " file"
35: True if the file exists and is a directory.
36: .TP
37: .BI -s " file"
38: True if the file exists and has a size greater than zero.
39: .TP
40: .BI -t " fildes
41: True if the open file whose file descriptor number is
42: .I fildes
43: (1 by default)
44: is the same file as
45: .BR /dev/cons .
46: .TP
47: .IB s1 " = " s2
48: True
49: if the strings
50: .I s1
51: and
52: .I s2
53: are identical.
54: .TP
55: .IB s1 " != " s2
56: True
57: if the strings
58: .I s1
59: and
60: .I s2
61: are not identical.
62: .TP
63: s1
64: True if
65: .I s1
66: is not the null string.
67: (Deprecated.)
68: .TP
69: .BI -n " s1"
70: True if the length of string
71: .I s1
72: is non-zero.
73: .TP
74: .BI -z " s1"
75: True if the length of string
76: .I s1
77: is zero.
78: .TP
79: .IB n1 " -eq " n2
80: True if the integers
81: .I n1
82: and
83: .I n2
84: are arithmetically equal.
85: Any of the comparisons
86: .BR -ne ,
87: .BR -gt ,
88: .BR -ge ,
89: .BR -lt ,
90: or
91: .BR -le
92: may be used in place of
93: .BR -eq .
94: The (nonstandard) construct
95: .BI -l " string\f1,
96: meaning the length of
97: .IR string ,
98: may be used in place of an integer.
99: .PD
100: .PP
101: These primaries may be combined with the
102: following operators:
103: .TP "\w'\fL( \fIexpr\fL )XX'u"
104: .B !
105: unary negation operator
106: .PD0
107: .TP
108: .B -o
109: binary
110: .I or
111: operator
112: .TP
113: .B -a
114: binary
115: .I and
116: operator; higher precedence than
117: .BR -o
118: .TP
119: .BI "( " expr " )"
120: parentheses for grouping.
121: .PD
122: .PP
123: The primitives
124: .BR -b ,
125: .BR -u ,
126: .BR -g ,
127: and
128: .BR -s
129: return false; they are recognized for compatibility with POSIX.
130: .PP
131: Notice that all the operators and flags are separate
132: arguments to
133: .IR test .
134: Notice also that parentheses and equal signs are meaningful
135: to
136: .I rc
137: and must be enclosed in quotes.
138: .SH EXAMPLES
139: .I Test
140: is a dubious way to check for specific character strings:
141: it uses a process to do what an
142: .IR rc (1)
143: match or switch statement can do.
144: The first example is not only inefficient but wrong, because
145: .I test
146: understands the purported string
147: .B \&"-c"
148: as an option.
149: .IP
150: .EX
151: if (test $1 '=' "-c") echo OK # wrong!
152: .EE
153: .LP
154: A better way is
155: .IP
156: .EX
157: if (~ $1 -c) echo OK
158: .EE
159: .PP
160: Test whether
161: .L abc
162: is in the current directory.
163: .IP
164: .B test -f abc -o -d abc
165: .SH SOURCE
166: .B /sys/src/cmd/test.c
167: .SH "SEE ALSO"
168: .IR rc (1)
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.