expr(1) expr(1)
NAME
expr  evaluate arguments as an expression
SYNOPSIS
expr arguments
DESCRIPTION
expr takes arguments as an expression, evaluates, then writes the
result on the standard output. Terms in the expression must be
separated by blanks. Characters special to the shell must be escaped.
Note that 0, rather than the null string, is returned to indicate a
zero value. Strings containing blanks or other special characters
should be quoted. Integervalued arguments can be preceded by a unary
minus sign. Internally, integers are treated as 32bit, 2's
complement numbers.
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 equalprecedence 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
If both arguments are integers, and if the
comparison is satisfied, expr returns 1 otherwise it
returns 0. expr returns the result of an integer
comparison if both arguments are integers; otherwise
returns the result of a lexical comparison (note
that = and == are identical, in that both test for
equality).
expr { +,  } expr
Addition or subtraction of decimal integervalued
arguments.
expr { \*, /, % } expr
Multiplication, division or remainder of decimal
integervalued arguments producing an integer
result.
expr : expr The matching operator : compares the first argument
with the second argument which must be a regular
expression. expr supports the Basic Regular
Expression syntax (see regexp(5)), 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
HewlettPackard Company  1  HPUX Release 11i: November 2000
expr(1) expr(1)
the number of characters matched (0 on failure).
Alternatively, the \(...\) pattern symbols can be
used to return a portion of the first argument.
length expr The length of expr.
substr expr expr expr
Takes the substring of the first expr, starting at
the character specified by the second expr for the
length given by the third expr.
index expr expr Returns the position in the first expr which
contains a character found in the second expr.
match Match is a prefix operator equivalent to the infix
operator :.
\(...\) Grouping symbols. Any expression can be placed
within parentheses. Parentheses can be nested to a
depth of EXPR_NEST_MAX as specified in the header
file <limits.h>.
EXTERNAL INFLUENCES
Environment Variables
LC_COLLATE determines the collating sequence used in evaluating
regular expressions and the behavior of the relational operators when
comparing string values.
LC_CTYPE determines the interpretation of text as single and/or
multibyte characters, and the characters matched by character class
expressions in regular expressions.
LANG determines the language in which messages are displayed.
If LC_COLLATE or LC_CTYPE is not specified in the environment or is
set to the empty string, the value of LANG is used as a default for
each unspecified or empty variable. If LANG is not specified or is
set to the empty string, a default of "C" (see lang(5)) is used
instead of LANG. If any internationalization variable contains an
invalid setting, expr behaves as if all internationalization variables
are set to "C" (see environ(5)).
International Code Set Support
Single and multibyte character code sets are supported.
RETURN VALUE
As a side effect of expression evaluation, expr returns the following
exit values:
0 Expression is neither null nor zero.
HewlettPackard Company  2  HPUX Release 11i: November 2000
expr(1) expr(1)
1 Expression is null or zero.
2 Invalid expression.
>>>>2 An error occurred while evaluating the expression.
DIAGNOSTICS
syntax error Operator or operand errors
nonnumeric argument Arithmetic attempted on a string
EXAMPLES
Add 1 to the shell variable a:
a=`expr $a + 1`
For $a equal to either /usr/abc/file or just file, return the last
segment of a path name (i.e., file). Beware of / alone as an argument
because expr interprets it as the division operator (see WARNINGS
below):
expr $a : '.*/\(.*\)' \ $a
A better representation 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 : '.*'
WARNINGS
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 = '='
resembles:
expr = = =
as the arguments are passed to expr (and they will all be taken as the
= operator). The following works:
expr X$a = X=
AUTHOR
expr was developed by OSF and HP.
HewlettPackard Company  3  HPUX Release 11i: November 2000
expr(1) expr(1)
SEE ALSO
sh(1), test(1), environ(5), lang(5), regexp(5).
STANDARDS CONFORMANCE
expr: SVID2, SVID3, XPG2, XPG3, XPG4, POSIX.2
HewlettPackard Company  4  HPUX Release 11i: November 2000
