sbase

suckless unix tools
git clone git://git.2f30.org/sbase.git
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. Then
     26 .Sy expr
     27 has the recursive form
     28 .Sy expr = [(] expr1 operand expr2 [)].
     29 .Pp
     30 With
     31 .Sy operand
     32 being in order of increasing precedence:
     33 .Bl -tag -width Ds
     34 .It |
     35 Evaluate to
     36 .Sy expr1
     37 if it is neither an empty string nor 0; otherwise evaluate to
     38 .Sy expr2 .
     39 .It &
     40 Evaluate to
     41 .Sy expr1
     42 if
     43 .Sy expr1
     44 and
     45 .Sy expr2
     46 are neither empty strings nor 0; otherwise evaluate to 0.
     47 .It = > >= < <= !=
     48 If
     49 .Sy expr1
     50 and
     51 .Sy expr2
     52 are integers, evaluate to 1 if the relation is true and 0 if it is false.
     53 If
     54 .Sy expr1
     55 and
     56 .Sy expr2
     57 are strings, apply the relation to the return value of
     58 .Xr strcmp 3 .
     59 .It + -
     60 If
     61 .Sy expr1
     62 and
     63 .Sy expr2
     64 are integers, evaluate to their sum or subtraction.
     65 .It * / %
     66 If
     67 .Sy expr1
     68 and
     69 .Sy expr2
     70 are integers, evaluate to their multiplication, division or remainder.
     71 .It :
     72 Evaluate to the number of characters matched in
     73 .Sy expr1
     74 against
     75 .Sy expr2 . expr2
     76 is anchored with an implicit '^'.
     77 .Pp
     78 You can't directly match the empty string, since zero matched characters
     79 resolve equally to a failed match. To work around this limitation, use
     80 "expr X'' : 'X$' instead of "expr '' : '$'"
     81 .El
     82 .Sh EXIT STATUS
     83 .Bl -tag -width Ds
     84 .It 0
     85 .Ar expression
     86 is neither an empty string nor 0.
     87 .It 1
     88 .Ar expression
     89 is an empty string or 0.
     90 .It 2
     91 .Ar expression
     92 is invalid.
     93 .It > 2
     94 An error occurred.
     95 .El
     96 .Sh SEE ALSO
     97 .Xr test 1
     98 .Sh STANDARDS
     99 The
    100 .Nm
    101 utility is compliant with the
    102 .St -p1003.1-2013
    103 specification.