expr.1 - sbase - suckless unix tools | |
git clone git://git.suckless.org/sbase | |
Log | |
Files | |
Refs | |
README | |
LICENSE | |
--- | |
expr.1 (1768B) | |
--- | |
1 .Dd October 8, 2015 | |
2 .Dt EXPR 1 | |
3 .Os sbase | |
4 .Sh NAME | |
5 .Nm expr | |
6 .Nd evaluate expression | |
7 .Sh SYNOPSIS | |
8 .Nm | |
9 .Ar expression | |
10 .Sh DESCRIPTION | |
11 .Nm | |
12 evaluates | |
13 .Ar expression | |
14 and writes the result to stdout. | |
15 .Pp | |
16 There are two elemental expressions, | |
17 .Sy integer | |
18 and | |
19 .Sy string. | |
20 Let | |
21 .Sy expr | |
22 be a non-elemental expression and | |
23 .Sy expr1 , | |
24 .Sy expr2 | |
25 arbitrary expressions. | |
26 Then | |
27 .Sy expr | |
28 has the recursive form | |
29 .Sy expr = [(] expr1 operand expr2 [)]. | |
30 .Pp | |
31 With | |
32 .Sy operand | |
33 being in order of increasing precedence: | |
34 .Bl -tag -width Ds | |
35 .It | | |
36 Evaluate to | |
37 .Sy expr1 | |
38 if it is neither an empty string nor 0; otherwise evaluate to | |
39 .Sy expr2 . | |
40 .It & | |
41 Evaluate to | |
42 .Sy expr1 | |
43 if | |
44 .Sy expr1 | |
45 and | |
46 .Sy expr2 | |
47 are neither empty strings nor 0; otherwise evaluate to 0. | |
48 .It = > >= < <= != | |
49 If | |
50 .Sy expr1 | |
51 and | |
52 .Sy expr2 | |
53 are integers, evaluate to 1 if the relation is true and 0 if it is false. | |
54 If | |
55 .Sy expr1 | |
56 and | |
57 .Sy expr2 | |
58 are strings, apply the relation to the return value of | |
59 .Xr strcmp 3 . | |
60 .It + - | |
61 If | |
62 .Sy expr1 | |
63 and | |
64 .Sy expr2 | |
65 are integers, evaluate to their sum or subtraction. | |
66 .It * / % | |
67 If | |
68 .Sy expr1 | |
69 and | |
70 .Sy expr2 | |
71 are integers, evaluate to their multiplication, division or remainder. | |
72 .It : | |
73 Evaluate to the number of characters matched in | |
74 .Sy expr1 | |
75 against | |
76 .Sy expr2 . expr2 | |
77 is anchored with an implicit '^'. | |
78 .Pp | |
79 You can't directly match the empty string, since zero matched characters | |
80 resolve equally to a failed match. | |
81 To work around this limitation, use "expr X'' : 'X$' instead of "expr '' | |
82 : '$'" | |
83 .El | |
84 .Sh EXIT STATUS | |
85 .Bl -tag -width Ds | |
86 .It 0 | |
87 .Ar expression | |
88 is neither an empty string nor 0. | |
89 .It 1 | |
90 .Ar expression | |
91 is an empty string or 0. | |
92 .It 2 | |
93 .Ar expression | |
94 is invalid. | |
95 .It > 2 | |
96 An error occurred. | |
97 .El | |
98 .Sh SEE ALSO | |
99 .Xr test 1 | |
100 .Sh STANDARDS | |
101 The | |
102 .Nm | |
103 utility is compliant with the | |
104 .St -p1003.1-2013 | |
105 specification. |