NAME                                                      EXPR(I)
     expr - evaluate arguments as an algebraic expression

SYNOPSIS
     expr arg ...

DESCRIPTION
     The arguments are taken as	an expression.	After evaluation,
     the  result is written on the standard output.  Terms of the
     expression	must be	separated by blanks.  Characters  special
     to	 the  Shell,  i.e.,  `*', `|', `&', `(', and `)', must be
     escaped.

     The operators and keywords	 are  listed  below.   Characters
     that need to be escaped are preceded by `\'.  The list is in
     order of increasing precedence, with equal	precedence opera-
     tors grouped within `{\f3|}' symbols.

	expr \|| expr

     expr \& expr

     expr { +, - } expr

     expr { \*,	/, % } expr

     substr expr expr expr

     length expr

     index expr	expr

     \(	expr \)

     The result	of substr is that portion of the first expression
     (possibly	null)  which  is  defined  by  the offset (second
     expression, starting at `1') and  the  span  (third  expres-
     sion).   A	 large	span  value  can  be  given to obtain the
     remainder of the string.

     Length returns the	length in characters  of  the  expression
     that follows.

     Index searches the	first expression for the first	character
     that  matches  a  character  from the second expression.  It
     returns the character position number if it succeeds, or `0'
     if	it fails.

     The expr command is handy with Shell variables.   For  exam-
     ple:

	  expr substr xxx$a "("	length xxx$a - 2 ")" 3 | = b

     assigns the last three characters of the Shell  variable  $a
     into the variable $b.

     Note that `0' is returned to indicate a zero  value,  rather
     than  the	null  string.  Strings containing blanks or other
     special characters	should be quoted.

DIAGNOSTICS
     Grumbles from yacc(I) for syntax violations.
     "Non-numeric argument" if the argument needs to be,  but  is
     not, an integer.