Evaluate expression.

expr evaluates *expression *and writes the result to standard output.

Syntax exprexpressionOptions 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 informa- tion on regular expressions. If the match succeeds and the pattern contains at least one regu- lar expression subexpression `\(...\)', the string correspond- ing 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.

Examples

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

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

*"Silence is the perfect expression of scorn" ~ George Bernard Shaw* (Back to Methuselah, 1921)

**Related macOS commands:**

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