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

      expr expression

     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

     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.


# A partial match will return the number of characters that match:
$ expr ss64 : ss6

# The condition in string 2 must entirely match string 1
$ expr ss64 : ss7

# Adding numbers
$ expr 5 + 2

# When multiplying the * has to be escaped
$ expr 5 \* 3

# Incrementing a variable (arithmetic expansion)
$ demo=1
$ demo=`expr $demo + 1`
$ echo $demo
$ demo=`expr $demo + 1`
$ echo $demo

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.

Copyright © 1999-2024 SS64.com
Some rights reserved