expr.1 revision 1.13
$NetBSD: expr.1,v 1.13 2000/09/04 07:30:08 kleink Exp $

Written by J.T. Conklin <jtc@netbsd.org>.
Public domain.

.Dd July 3, 1993 .Dt EXPR 1 .Os .Sh NAME .Nm expr .Nd evaluate expression .Sh SYNOPSIS .Nm .Ar expression .Sh DESCRIPTION The .Nm utility evaluates .Ar expression and writes the result on standard output.

p All operators are separate arguments to the .Nm utility. Characters special to the command interpreter must be escaped.

p Operators are listed below in order of increasing precedence. Operators with equal precedence are grouped within { } symbols. l -tag -width indent t Ar expr1 Li | Ar expr2 Returns the evaluation of .Ar expr1 if it is neither an empty string nor zero; otherwise, returns the evaluation of .Ar expr2 . t Ar expr1 Li & Ar expr2 Returns the evaluation of .Ar expr1 if neither expression evaluates to an empty string or zero; otherwise, returns zero. t Ar expr1 Li "{=, >, >=, <, <=, !=}" Ar 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. t Ar expr1 Li "{+, -}" Ar expr2 Returns the results of addition or subtraction of integer-valued arguments. t Ar expr1 Li "{*, /, %}" Ar expr2 Returns the results of multiplication, integer division, or remainder of integer-valued arguments. t Ar expr1 Li : Ar expr2 The .Dq \: operator matches .Ar expr1 against .Ar expr2 , which must be a regular expression. The regular expression is anchored to the beginning of the string with an implicit .Dq ^ .

p If the match succeeds and the pattern contains at least one regular expression subexpression .Dq "\e(...\e)" , the string corresponding to .Dq "\e1" 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. .El

p Parentheses are used for grouping in the usual manner. .Sh EXAMPLES l -enum t The following example adds one to the variable a. .Dl a=`expr $a + 1` t The following example returns the filename portion of a pathname stored in variable a. The // characters act to eliminate ambiguity with the division operator. .Dl expr "//$a" Li : '.*/\e(.*\e)' t The following example returns the number of characters in variable a. .Dl expr $a Li : '.*' .El .Sh EXIT STATUS The .Nm utility exits with one of the following values: l -tag -width Ds -compact t 0 the expression is neither an empty string nor 0. t 1 the expression is an empty string or 0. t 2 the expression is invalid. t >2 an error occurred (such as memory allocation failure). .El .Sh STANDARDS The .Nm utility conforms to .St -p1003.2 .