sbase

suckless unix tools
git clone git://git.suckless.org/sbase
Log | Files | Refs | README | LICENSE

expr.1 (1763B)


      1 .Dd 2015-10-08
      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.