#### 106 lines 1.7 KiB Groff Raw Normal View History

 .Dd 2015-10-08 2015-01-31 13:20:02 +00:00 .Dt EXPR 1 2015-01-31 19:37:03 +00:00 .Os sbase 2014-09-29 13:22:59 +00:00 .Sh NAME .Nm expr .Nd evaluate expression .Sh SYNOPSIS .Nm 2014-09-29 13:22:59 +00:00 .Ar expression .Sh DESCRIPTION .Nm evaluates 2014-09-29 13:22:59 +00:00 .Ar expression and writes the result to stdout. 2014-09-29 13:22:59 +00:00 .Pp There are two elemental expressions, .Sy integer and .Sy string. Let .Sy expr be a non-elemental expression and .Sy expr1 , .Sy expr2 arbitrary expressions. Then .Sy expr has the recursive form .Sy expr = [(] expr1 operand expr2 [)]. 2014-09-29 13:22:59 +00:00 .Pp With .Sy operand 2015-02-01 20:28:17 +00:00 being in order of increasing precedence: .Bl -tag -width Ds .It | Evaluate to .Sy expr1 if it is neither an empty string nor 0; otherwise evaluate to .Sy expr2 . .It & Evaluate to .Sy expr1 if .Sy expr1 and .Sy expr2 are neither empty strings nor 0; otherwise evaluate to 0. .It = > >= < <= != If .Sy expr1 and .Sy expr2 are integers, evaluate to 1 if the relation is true and 0 if it is false. If .Sy expr1 and .Sy expr2 are strings, apply the relation to the return value of .Xr strcmp 3 . .It + - If .Sy expr1 and .Sy expr2 are integers, evaluate to their sum or subtraction. .It * / % If .Sy expr1 and .Sy expr2 2015-02-01 20:28:17 +00:00 are integers, evaluate to their multiplication, division or remainder. .It : Evaluate to the number of characters matched in .Sy expr1 against .Sy expr2 . expr2 is anchored with an implicit '^'. 2014-09-29 13:22:59 +00:00 .Pp You can't directly match the empty string, since zero matched characters resolve equally to a failed match. To work around this limitation, use "expr X'' : 'X\$' instead of "expr '' : '\$'" 2014-09-29 13:22:59 +00:00 .El .Sh EXIT STATUS .Bl -tag -width Ds 2014-09-29 13:22:59 +00:00 .It 0 .Ar expression 2015-02-09 23:34:24 +00:00 is neither an empty string nor 0. 2014-09-29 13:22:59 +00:00 .It 1 .Ar expression 2015-02-09 23:34:24 +00:00 is an empty string or 0. 2014-09-29 13:22:59 +00:00 .It 2 .Ar expression 2015-02-09 23:34:24 +00:00 is invalid. .It > 2 2015-02-09 23:34:24 +00:00 An error occurred. 2014-09-29 13:22:59 +00:00 .El .Sh SEE ALSO .Xr test 1 2014-09-29 13:22:59 +00:00 .Sh STANDARDS The .Nm utility is compliant with the .St -p1003.1-2013 2014-09-29 13:22:59 +00:00 specification.