Evaluate expression and write the result to standard output.
Syntax
expr expression
Options
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
locale-specific 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 integer-valued arguments.
expr1 {*, /, %} expr2
Returns the results of multiplication, integer division, or remainder of
integer-valued arguments.
expr1 : expr2
The ':' operator matches expr1 against expr2, which must be a regular expression.
The regular expression is anchored to the beginning of the string with an
implicit '^'. expr expects "basic" regular expressions, see re_format(7)
for more on regular expressions.
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 0.
Parentheses are used for grouping in the usual manner.
Exit Status
expr 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.
A partial match will return the number of characters that match:
$ expr ss64 : ss6
3
The condition in string 2 must entirely match string 1:
$ expr ss64 : ss7
0
Adding numbers:
$ expr 5 + 2
7
When multiplying the * has to be escaped:
$ expr 5 \* 3
15
Incrementing a variable (arithmetic expansion):
$ demo=1
$ demo=`expr $demo + 1`
$ echo $demo
2
$ demo=`expr $demo + 1`
$ echo $demo
3
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 $demo:
$ demo=ss64
$ expr $demo : '.*'
“Silence is the perfect expression of scorn” ~ George Bernard Shaw (Back to Methuselah, 1921)
Local man page: expr - Command line help page on your local machine.
awk - Find and Replace text within file(s).
eval - Evaluate several commands/arguments.
for - Loop, expand words, and execute commands.
test - Evaluate a conditional expression.