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. Integer-valued arguments can be preceded by a unary
minus sign. Internally, integers are treated as 32-bit, 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 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
expr \> expr
expr \>= expr
expr \< expr returns the result of an integer comparison if
expr \<= expr both arguments are integers; otherwise returns the
expr != expr result of a lexical comparison (note that = and ==
are identical, in that both test for equality).
expr + expr addition of integer-valued arguments.
expr - expr subtraction of integer-valued arguments.
expr \* expr multiplication of integer-valued arguments.
expr / expr division of integer-valued arguments.
expr % expr 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. 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
Hewlett-Packard Company - 1 - HP-UX Release 10.20: July 1996
expr(1) expr(1)
matching operator returns 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
multi-byte 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 multi-byte character code sets are supported.
RETURN VALUE
As a side effect of expression evaluation, expr returns the following
exit values:
Hewlett-Packard Company - 2 - HP-UX Release 10.20: July 1996
expr(1) expr(1)
0 Expression is neither null nor zero.
1 Expression is null or zero.
2 Invalid expression.
>2 An error occurred while evaluating the expression.
DIAGNOSTICS
syntax error Operator or operand errors
non-numeric 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=
Hewlett-Packard Company - 3 - HP-UX Release 10.20: July 1996
expr(1) expr(1)
AUTHOR
expr was developed by OSF and HP.
SEE ALSO
sh(1), test(1), environ(5), lang(5), regexp(5).
STANDARDS CONFORMANCE
expr: SVID2, SVID3, XPG2, XPG3, XPG4, POSIX.2
Hewlett-Packard Company - 4 - HP-UX Release 10.20: July 1996