NetBSD/bin/expr/expr.1

108 lines
2.8 KiB
Groff
Raw Normal View History

.\" $NetBSD: expr.1,v 1.11 2000/01/14 07:14:41 mjl Exp $
1995-03-21 12:01:59 +03:00
.\"
.\" Written by J.T. Conklin <jtc@netbsd.org>.
.\" Public domain.
1993-07-21 00:16:25 +04:00
.\"
.Dd July 3, 1993
.Dt EXPR 1
.Os
.Sh NAME
.Nm expr
.Nd evaluate expression
.Sh SYNOPSIS
1997-10-20 12:50:59 +04:00
.Nm
1993-07-21 00:16:25 +04:00
.Ar expression
.Sh DESCRIPTION
The
1997-10-20 12:50:59 +04:00
.Nm
1993-07-21 00:16:25 +04:00
utility evaluates
.Ar expression
and writes the result on standard output.
.Pp
All operators are separate arguments to the
1997-10-20 12:50:59 +04:00
.Nm
1993-07-21 00:16:25 +04:00
utility.
Characters special to the command interpreter must be escaped.
.Pp
1994-01-11 05:10:48 +03:00
Operators are listed below in order of increasing precedence.
Operators with equal precedence are grouped within { } symbols.
1993-07-21 00:16:25 +04:00
.Bl -tag -width indent
.It 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 .
.It Ar expr1 Li & Ar expr2
Returns the evaluation of
.Ar expr1
if neither expression evaluates to an empty string or zero;
otherwise, returns zero.
.It Ar expr1 Li "{=, >, >=, <, <=, !=}" Ar expr2
1994-01-11 05:10:48 +03:00
Returns the results of integer comparison if both arguments are integers;
otherwise, returns the results of string comparison using the locale-specific
collation sequence.
1993-07-21 00:16:25 +04:00
The result of each comparison is 1 if the specified relation is true,
or 0 if the relation is false.
.It Ar expr1 Li "{+, -}" Ar expr2
Returns the results of addition or subtraction of integer-valued arguments.
.It Ar expr1 Li "{*, /, %}" Ar expr2
Returns the results of multiplication, integer division, or remainder of integer-valued arguments.
.It 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
1994-01-11 05:10:48 +03:00
to the beginning of the string with an implicit
.Dq ^ .
1993-07-21 00:16:25 +04:00
.Pp
If the match succeeds and the pattern contains at least one regular
expression subexpression
1993-07-21 00:16:25 +04:00
.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.
1993-07-21 00:16:25 +04:00
.El
.Pp
Parentheses are used for grouping in the usual manner.
.Sh EXAMPLES
.Bl -enum
.It
The following example adds one to the variable a.
.Dl a=`expr $a + 1`
.It
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)'
.It
The following example returns the number of characters in variable a.
.Dl expr $a Li : '.*'
.El
.Sh DIAGNOSTICS
The
1997-10-20 12:50:59 +04:00
.Nm
1993-07-21 00:16:25 +04:00
utility exits with one of the following values:
.Bl -tag -width Ds -compact
1993-07-21 00:16:25 +04:00
.It 0
the expression is neither an empty string nor 0.
.It 1
the expression is an empty string or 0.
.It 2
the expression is invalid.
.It >2
an error occurred (such as memory allocation failure).
1993-07-21 00:16:25 +04:00
.El
.Sh STANDARDS
The
1997-10-20 12:50:59 +04:00
.Nm
utility conforms to
.St -p1003.2 .