expr —
evaluate
expression
The
expr utility evaluates
expression and writes the result on standard
output. All operators are separate arguments to the
expr utility. Characters special to the command
interpreter must be escaped.
Operators are listed below in order of increasing precedence. Operators with
equal precedence are grouped within { } symbols.


 expr1 
expr2
 Returns the evaluation of
expr1 if it is neither an empty string
nor zero; otherwise, returns the evaluation of
expr2.


 expr1
&
expr2
 Returns the evaluation of
expr1 if neither expression evaluates to
an empty string or zero; otherwise, returns zero.


 expr1
{=,
>, >=, <, <=, !=}
expr2
 Returns the results of integer comparison if both arguments
are integers; otherwise, returns the results of string comparison using
the localespecific collation sequence. The result of each comparison is 1
if the specified relation is true, or 0 if the relation is false.


 expr1
{+,
}
expr2
 Returns the results of addition or subtraction of
integervalued arguments.


 expr1
{*,
/, %}
expr2
 Returns the results of multiplication, integer division, or
remainder of integervalued arguments.


 expr1
:
expr2
 The ‘
:
’ operator
matches expr1 against
expr2, which must be a basic regular
expression. The regular expression is anchored to the beginning of the
string with an implicit ‘^
’.
If the match succeeds and the pattern contains at least one regular
expression subexpression “\(...\)”, the string corresponding
to “\1” is returned; otherwise, the matching operator
returns the number of characters matched. If the match fails and the
pattern contains a regular expression subexpression the null string is
returned; otherwise, returns 0.
Note: the empty string cannot be matched using
This is because the returned number of matched characters (zero) is
indistinguishable from a failed match, so
expr returns failure (0). To match the empty
string, use a structure such as:
Parentheses are used for grouping in the usual manner.
The
expr utility exits with one of the following
values:
 0
 The expression is neither an empty string nor 0.
 1
 The expression is an empty string or 0.
 2
 The expression is invalid.
 >2
 An error occurred (such as memory allocation failure).
Add 1 to the variable
a:
Return the filename portion of a pathname stored in variable
a. The
‘
//
’ characters act to eliminate
ambiguity with the division operator:
$ expr "//$a" : '.*/\(.*\)'
Return the number of characters in variable
a:
test(1),
re_format(7)
The
expr utility is compliant with the
IEEE Std 1003.12008
(“POSIX.1”) specification.
The
expr utility first appeared in the Programmer's
Workbench (PWB/UNIX) and has supported regular expressions since
Version 7 AT&T UNIX. It was rewritten from
scratch for
386BSD0.1 and again for
NetBSD 1.1.
The first free version was written by
Pace
Willisson in 1992. This version was written by
John T. Conklin in 1994.