expr(1)
Name
expr − evaluate expressions
Syntax
expr arg...
Description
The arguments are taken as an expression. After evaluation, the result is written on the standard output. Each token of the expression is a separate argument.
The operators and keywords are listed below. The list is in order of increasing precedence, with equal precedence operators grouped.
expr | expr Yields the first expr if it is neither null nor 0. Otherwise yields the second expr.
expr & expr Yields the first expr if neither expr is null or 0. Otherwise yields 0.
expr relop expr The relop is one of < <= = != >= > and yields 1 if the indicated comparison is true, 0 if false. The comparison is numeric if both expr are integers, otherwise lexicographic.
expr + expr
expr - expr
Yields addition or subtraction of the arguments.
expr * expr
expr / expr
expr % expr
Yields multiplication, division, or remainder of the arguments.
expr : expr
match string expr
The matching operators : and match compare the string first argument with the regular expression second argument; regular expression syntax is the same as that of ed(.). The \(...\) pattern symbols can be used to select a portion of the first argument. Otherwise, the matching operator returns the number of characters matched (0 on failure).
( expr ) Parentheses for grouping.
To lexically compare two special characters, such as ( with ), you must precede them with identical nonspecial characters. To lexically compare any two operators, such as + with -, you must precede them with identical, nonoperator characters. For example:
expr "X(" ">" "X)"
expr "S+" | expr "S-"
Examples
The first example adds 1 to the shell variable a:
a=`expr $a + 1`
The second example finds the file name part (least significant part) of the pathname stored in variable a,
expr $a : ´.*/\(.*\)´ ´|´ $a
Note the quoted shell metacharacters.
Diagnostics
The expr command returns the following exit codes:
0The expression is neither null nor 0.
1The expression is null or 0.
2The expression is invalid.