expr(1)expr(1)NAMEexpr - Evaluates arguments as expressions
SYNOPSISexpr expression
STANDARDS
Interfaces documented on this reference page conform to industry stan‐
dards as follows:
expr: XCU5.0
Refer to the standards(5) reference page for more information about
industry standards and associated tags.
OPTIONS
None
OPERANDS
The single expression evaluated by expr will be formed from the oper‐
ands, as described in the DESCRIPTION section. Each of the expression
operator symbols: ( ) | & = > >= < <= != + - * /
% : and the symbols integer and string in the DESCRIPTION section
must be provided as separate arguments to expr. Expression to be eval‐
uated, formed as explained in the DESCRIPTION section.
DESCRIPTION
The expr command reads an expression, evaluates it, and writes the
result to standard output. Within the expression argument, you must
separate each term with spaces, precede characters special to the shell
with a \ (backslash), and quote strings containing spaces or other spe‐
cial characters. Note that expr returns 0 to indicate a zero value,
rather than the null string. Integers can be preceded by a unary minus
sign. Internally, integers are treated as 64-bit or 32-bit two's com‐
plement numbers, depending on the word size of the hardware platform.
The operators and keywords are described in the following listing.
Characters that need to be escaped are preceded by a \ (backslash).
The list is in order of increasing precedence with equal precedence
operators grouped within {} (braces). Returns expression1 if it is
neither null nor 0 (zero); otherwise, returns expression2. Returns
expression1 if neither expression1 nor expression2 is null nor 0; oth‐
erwise, returns 0. Returns the result of an integer comparison if both
expressions are integers; otherwise, returns the result of a string
comparison. Adds or subtracts integer-valued arguments. Multiplies,
divides, or provides the remainder from the division of integer-valued
arguments. Compares expression1 with expression2, which must be a
basic regular expression, with syntax as described for grep, except
that all patterns are anchored, so ^ (circumflex) (which anchors a pat‐
tern to the beginning of a line) is not a special character in this
context.
Normally, the matching operator returns the number of characters
matched. Alternatively, you can use the \(...\) symbols in
expression2 to return a portion of expression1. Provides
expression grouping. An argument consisting only of an
(optional) unary minus followed by digits. A string argument.
Refer to the STRING OPERAND section.
To avoid unpredictable results when using a range expression to match a
class of characters, use a character class expression rather than a
standard range expression. For information about character class
expressions, see the discussion of this topic included in the descrip‐
tion of the grep command.
FUNCTIONS
[Tru64 UNIX] The expr command provides the following string-expression
functions. Strings containing white space must be quoted. A string
argument should not be one of the expression operator symbols shown in
the OPERANDS section or one of the string function names below. You
cannot use, for example, match "$subject" "$pattern" unless it is con‐
firmed that subject and pattern do not match this violation. The first
character of a string is position 1. The information returned by all
these functions is in the form of a string: [Tru64 UNIX] Compares each
character in the second string against each character in the first
string and returns the position in the first string of the first match
found, where the first match is the match closest to the beginning of
string1. [Tru64 UNIX] Returns the length of the string argument.
[Tru64 UNIX] See the description of the : (colon) match operator,
above. [Tru64 UNIX] Returns the substring of string that begins at
character position start and is length characters long.
STRING OPERAND
A string argument is an argument that cannot be identified as an inte‐
ger argument or as one of the expression operator symbols shown in the
OPERANDS section.
The use of string arguments length, substr, index or match produces
unspecified results.
EXIT STATUS
The expr command returns the following exit values: The expression is
neither null nor 0. The expression is null or 0. The expression is
invalid. An error occurred.
EXAMPLES
To increment a shell variable, enter: COUNT=`expr $COUNT + 1`
This adds 1 to the COUNT shell variable (see sh for details).
To find the length of a shell variable, enter: RES=`expr "$VAR"
: ".*"`
Note that VAR is in double quotes to avoid problems where VAR is
NULL or contains embedded spaces. The regular expression is
also quoted to avoid expansion by the shell. This operation can
also be performed as: RES=`expr length "$VAR"` To use part of a
shell variable, enter: RES=`expr "$VAR" : "-*\(.*\)"`
This removes leading - (dashes), if any, from VAR. If the \( \)
characters were omitted, RES would contain the length of VAR.
To find a character from one string in another string, enter:
INDEX=`expr index "Hello World!" "Wo"`
Note that the returned value is 5, not 7. The first match is
the fifth character in string1, matching the o in string2 rather
than the W, which is the seventh character in string1. Special
considerations: RES=`expr "x$VAR" : "x-*\(.*\)"`
This succeeds even if VAR has the value - (dash). RES=`expr
"x$VAR" = "x="
This succeeds even if VAR has the value = (equal sign). When
CMD_ENV variable is set to bsd: RES=`expr 0001'
This results in 0001. Otherwise the value is 1. RES=`expr sub‐
str 012345 1 3'
This results in 012. Otherwise the value is 12.
ENVIRONMENT VARIABLES
The following environment variables affect the execution of expr:
[Tru64 UNIX] This variable, if set to bsd, prevents stripping of lead‐
ing zeroes from expressions. Provides a default value for the interna‐
tionalization variables that are unset or null. If LANG is unset or
null, the corresponding value from the default locale is used. If any
of the internationalization variables contain an invalid setting, the
utility behaves as if none of the variables had been defined. If set
to a non-empty string value, overrides the values of all the other
internationalization variables. Determines the locale for the inter‐
pretation of sequences of bytes of text data as characters (for exam‐
ple, single-byte as opposed to multibyte characters in arguments) and
the behavior of character classes in regular expressions.. Determines
the locale for the format and contents of diagnostic messages written
to standard error. Determines the location of message catalogues for
the processing of LC_MESSAGES.
SEE ALSO
Commands: grep(1), Bourne shell sh(1b), POSIX shell sh(1p), test(1)
Functions: string(3), wcscat(3)
Standards: standards(5)expr(1)