sbase/expr.1
Michael Forney 22921a859f Fix various lint warnings in manuals
Fix "new sentence, new line" warnings throughout so that formatters
can produce correct spacing between sentences.

join.1
  Remove unnecessary Ns macros. These are not necessary for delimeters,
  which get special treatment.

xinstall.1
  Fix date in manual. The contents were last modified on 2016-12-03,
  so use that instead of the invalid date.

grep.1
  Fix escape sequence for `\<` and `\>`.

ed.1
  Remove spurious `\\n` escape for the null-command.
2020-03-01 15:32:11 -08:00

106 lines
1.7 KiB
Groff

.Dd 2015-10-08
.Dt EXPR 1
.Os sbase
.Sh NAME
.Nm expr
.Nd evaluate expression
.Sh SYNOPSIS
.Nm
.Ar expression
.Sh DESCRIPTION
.Nm
evaluates
.Ar expression
and writes the result to stdout.
.Pp
There are two elemental expressions,
.Sy integer
and
.Sy string.
Let
.Sy expr
be a non-elemental expression and
.Sy expr1 ,
.Sy expr2
arbitrary expressions.
Then
.Sy expr
has the recursive form
.Sy expr = [(] expr1 operand expr2 [)].
.Pp
With
.Sy operand
being in order of increasing precedence:
.Bl -tag -width Ds
.It |
Evaluate to
.Sy expr1
if it is neither an empty string nor 0; otherwise evaluate to
.Sy expr2 .
.It &
Evaluate to
.Sy expr1
if
.Sy expr1
and
.Sy expr2
are neither empty strings nor 0; otherwise evaluate to 0.
.It = > >= < <= !=
If
.Sy expr1
and
.Sy expr2
are integers, evaluate to 1 if the relation is true and 0 if it is false.
If
.Sy expr1
and
.Sy expr2
are strings, apply the relation to the return value of
.Xr strcmp 3 .
.It + -
If
.Sy expr1
and
.Sy expr2
are integers, evaluate to their sum or subtraction.
.It * / %
If
.Sy expr1
and
.Sy expr2
are integers, evaluate to their multiplication, division or remainder.
.It :
Evaluate to the number of characters matched in
.Sy expr1
against
.Sy expr2 . expr2
is anchored with an implicit '^'.
.Pp
You can't directly match the empty string, since zero matched characters
resolve equally to a failed match.
To work around this limitation, use "expr X'' : 'X$' instead of "expr ''
: '$'"
.El
.Sh EXIT STATUS
.Bl -tag -width Ds
.It 0
.Ar expression
is neither an empty string nor 0.
.It 1
.Ar expression
is an empty string or 0.
.It 2
.Ar expression
is invalid.
.It > 2
An error occurred.
.El
.Sh SEE ALSO
.Xr test 1
.Sh STANDARDS
The
.Nm
utility is compliant with the
.St -p1003.1-2013
specification.