EXPR(1) | General Commands Manual | EXPR(1)

# NAME

`expr` — evaluate expression

# SYNOPSIS

`expr` | expression ...

# DESCRIPTION

The `expr` utility evaluates each expression and writes the result on standard output. All operators are separate arguments to the `expr` utility. Characters special to the command interpreter must be escaped.

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 decimal 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 decimal integer-valued arguments.
expr1 `{*, /, %}` expr2
  Returns the results of multiplication, integer division, or remainder of decimal integer-valued arguments.
expr1 `:` expr2
  The ‘`:`’ operator matches expr1 against expr2, which must be a basic regular expression. The regular expression is anchored to the beginning of the string with an implicit ‘`^`’.

  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, returns 0.

  Note: the empty string cannot be matched using

      expr '' : '$'

  This is because the returned number of matched characters (zero) is indistinguishable from a failed match, so `expr` returns failure (0). To match the empty string, use a structure such as:

      expr X'' : 'X$'

Parentheses are used for grouping in the usual manner.

# EXIT STATUS

The `expr` utility 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.
>2
  An error occurred (such as memory allocation failure).

# EXAMPLES

Add 1 to the variable a:

    $ a=`expr $a + 1`

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 a:

    $ expr $a : '.*'

# SEE ALSO

test(1), re_format(7)

# STANDARDS

The `expr` utility is compliant with the IEEE Std 1003.1-2008 (“POSIX.1”) specification.

# HISTORY

The `expr` utility first appeared in the Programmer's Workbench (PWB/UNIX) and has supported regular expressions since Version 7 AT&T UNIX. It was rewritten from scratch for 386BSD-0.1 and again for NetBSD 1.1.

# AUTHORS

The first free version was written by Pace Willisson in 1992. This version was written by John T. Conklin in 1994.

December 22, 2022 | Debian