Jump to content United States-English
HP.com Home Products and Services Support and Drivers Solutions How to Buy
» Contact HP
More options
HP.com home
HP-UX Reference > E


HP-UX 11i Version 3: February 2007

Technical documentation

» Feedback
Content starts here

 » Table of Contents

 » Index


expr — evaluate arguments as an expression


expr arguments


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.

In the UNIX 2003 environment, expr returns 0 if the first expr is null or 0 and the second expr is null.

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 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 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>.


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)).

If UNIX_STD is set to 2003, it enables the UNIX 2003 Standard environment.

International Code Set Support

Single- and multi-byte character code sets are supported.


As a side effect of expression evaluation, expr returns the following exit values:


Expression is neither null nor zero.


Expression is null or zero.


Invalid expression.


An error occurred while evaluating the expression.


syntax error

Operator or operand errors

non-numeric argument

Arithmetic attempted on a string


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 : '.*'


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 = '='


expr = = =

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

expr X$a = X=


expr was developed by OSF and HP.


expr: SVID2, SVID3, XPG2, XPG3, XPG4, POSIX.2

Printable version
Privacy statement Using this site means you accept its terms Feedback to webmaster
© 1983-2007 Hewlett-Packard Development Company, L.P.