Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

⇒ expr(1) — NEWS-os 5.0.1

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

ed(1)

sh(1)



expr(1)                  USER COMMANDS                    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 pre-
     ceded 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 \(...\)



                                                                1





expr(1)                  USER COMMANDS                    expr(1)



          pattern symbols can be used to return a portion of  the
          first argument.

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 addi-
     tion 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 = = =





                                                                2





expr(1)                  USER COMMANDS                    expr(1)



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

          expr X$a = X=



















































                                                                3



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