expr(1) expr(1)
NAME [Toc] [Back]
expr - evaluate arguments as an expression
SYNOPSIS [Toc] [Back]
expr arguments
DESCRIPTION [Toc] [Back]
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
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 integer-valued
arguments.
expr { \*, /, % } expr
Multiplication, division or remainder of decimal
integer-valued 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
Hewlett-Packard Company - 1 - HP-UX 11i Version 2: August 2003
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 [Toc] [Back]
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 [Toc] [Back]
Single- and multi-byte character code sets are supported.
RETURN VALUE [Toc] [Back]
As a side effect of expression evaluation, expr returns the following
exit values:
0 Expression is neither null nor zero.
Hewlett-Packard Company - 2 - HP-UX 11i Version 2: August 2003
expr(1) expr(1)
1 Expression is null or zero.
2 Invalid expression.
>2 An error occurred while evaluating the expression.
DIAGNOSTICS [Toc] [Back]
syntax error Operator or operand errors
non-numeric argument Arithmetic attempted on a string
EXAMPLES [Toc] [Back]
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 [Toc] [Back]
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 [Toc] [Back]
expr was developed by OSF and HP.
Hewlett-Packard Company - 3 - HP-UX 11i Version 2: August 2003
expr(1) expr(1)
SEE ALSO [Toc] [Back]
sh(1), test(1), environ(5), lang(5), regexp(5).
STANDARDS CONFORMANCE [Toc] [Back]
expr: SVID2, SVID3, XPG2, XPG3, XPG4, POSIX.2
Hewlett-Packard Company - 4 - HP-UX 11i Version 2: August 2003 [ Back ] |