Museum

Home

Lab Overview

Retrotechnology Articles

⇒ Online Manual

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

ed(1)

sh(1)





   expr(1)                    (Essential Utilities)                    expr(1)


   NAME
         expr - evaluate arguments as an expression

   SYNOPSIS
         expr arguments

   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 must be
         escaped.  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.  Integer-valued arguments may be
         preceded by a unary minus sign.  Internally, integers are treated as
         32-bit, 2s complement numbers.  The length of the expression is
         limited to 512 characters.

         The operators and keywords are listed below.  Characters that need to
         be escaped in the shell [see sh(1)] are preceded by \.  The list is
         in order of increasing precedence, with equal precedence operators
         grouped within {} symbols.

         expr \| expr
              returns the first expr if it is neither null nor 0, otherwise
              returns the second expr.

         expr \& expr
              returns the first expr if neither expr is null or 0, otherwise
              returns 0.

         expr { =, \>, \>=, \<, \<=, != } expr
              returns the result of an integer comparison if both arguments
              are integers, otherwise returns the result of a lexical
              comparison.

         expr { +, - } expr
              addition or subtraction of integer-valued arguments.

         expr { \*, /, % } expr
              multiplication, division, or remainder of the integer-valued
              arguments.

         expr : expr
              The matching operator : compares the first argument with the
              second argument, which must be a regular expression.  Regular
              expression syntax is the same as that of ed(1), except that all
              patterns are ``anchored'' (i.e., begin with ^) and, therefore, ^
              is not a special character, in that context.  Normally, the
              matching operator returns the number of bytes matched (0 on
              failure).  Alternatively, the \(...\) pattern symbols can be
              used to return a portion of the first argument.


   7/91                                                                 Page 1









   expr(1)                    (Essential Utilities)                    expr(1)


   EXAMPLES
         Add 1 to the shell variable a:

               a=`expr $a + 1`

         The following example emulates basename(1)-it returns the last
         segment of the path name $a.  For $a equal to either /usr/abc/file or
         just file, the example returns file.  (Watch out for / alone as an
         argument:  expr takes it as the division operator; see the NOTES
         below.)

               expr $a : '.*/\(.*\)' \| $a

         Here is a better version of the previous example.  The addition of
         the // characters eliminates any ambiguity about the division
         operator and simplifies the whole expression.

               expr //$a : '.*/\(.*\)'

         Return the number of characters in $VAR:

               expr $VAR : '.*'

   SEE ALSO
         ed(1), sh(1).

   DIAGNOSTICS
         As a side effect of expression evaluation, expr returns the following
         exit values:
               0     if the expression is neither null nor 0
               1     if the expression is null or 0
               2     for invalid expressions.

        syntax error     for operator/operand errors
        non-numeric argument
                          if arithmetic is attempted on such a string

   NOTES
         After argument processing by the shell, expr cannot tell the
         difference between an operator and an operand except by the value.
         If $a is an =, the command:

               expr $a = '='

         looks like:

               expr = = =

         as the arguments are passed to expr (and they are all taken as the =
         operator).  The following works:



   Page 2                                                                 7/91









   expr(1)                    (Essential Utilities)                    expr(1)


               expr X$a = X=




















































   7/91                                                                 Page 3





Typewritten Software • bear@typewritten.org • Edmonds, WA 98026