expr

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.

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

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

Related macOS commands

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.


 
Copyright © 1999-2026 SS64.com
Some rights reserved