#### 106 lines 1.7 KiB Groff Raw Permalink Blame History

 ```.Dd 2015-10-08 ``` ```.Dt EXPR 1 ``` ```.Os sbase ``` ```.Sh NAME ``` ```.Nm expr ``` ```.Nd evaluate expression ``` ```.Sh SYNOPSIS ``` ```.Nm ``` ```.Ar expression ``` ```.Sh DESCRIPTION ``` ```.Nm ``` ```evaluates ``` ```.Ar expression ``` ```and writes the result to stdout. ``` ```.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 [)]. ``` ```.Pp ``` ```With ``` ```.Sy operand ``` ```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 ``` ```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 '^'. ``` ```.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 '' ``` ```: '\$'" ``` ```.El ``` ```.Sh EXIT STATUS ``` ```.Bl -tag -width Ds ``` ```.It 0 ``` ```.Ar expression ``` ```is neither an empty string nor 0. ``` ```.It 1 ``` ```.Ar expression ``` ```is an empty string or 0. ``` ```.It 2 ``` ```.Ar expression ``` ```is invalid. ``` ```.It > 2 ``` ```An error occurred. ``` ```.El ``` ```.Sh SEE ALSO ``` ```.Xr test 1 ``` ```.Sh STANDARDS ``` ```The ``` ```.Nm ``` ```utility is compliant with the ``` ```.St -p1003.1-2013 ``` ```specification. ```