sh(1): Add a brief summary of arithmetic expressions.

This commit is contained in:
Jilles Tjoelker 2010-08-22 13:04:00 +00:00
parent b8370f59bd
commit 36cf3efe41
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=211621

View File

@ -32,7 +32,7 @@
.\" from: @(#)sh.1 8.6 (Berkeley) 5/4/95
.\" $FreeBSD$
.\"
.Dd June 29, 2010
.Dd August 22, 2010
.Dt SH 1
.Os
.Sh NAME
@ -1230,7 +1230,7 @@ Quote Removal.
The
.Ql $
character is used to introduce parameter expansion, command
substitution, or arithmetic evaluation.
substitution, or arithmetic expansion.
.Ss Tilde Expansion (substituting a user's home directory)
A word beginning with an unquoted tilde character
.Pq Ql ~
@ -1463,10 +1463,41 @@ The
shell expands all tokens in the
.Ar expression
for parameter expansion,
command substitution, and quote removal.
command substitution,
arithmetic expansion
and quote removal.
.Pp
Next, the shell treats this as an arithmetic expression and
substitutes the value of the expression.
The allowed expressions are a subset of C expressions,
summarized below.
.Bl -tag -width "Variables" -offset indent
.It Values
All values are of type
.Ft intmax_t .
.It Constants
Decimal, octal (starting with
.Li 0 )
and hexadecimal (starting with
.Li 0x )
integer constants.
.It Variables
Shell variables can be read and written
and contain integer constants.
.It Unary operators
.Li "! ~ + -"
.It Binary operators
.Li "* / % + - << >> < <= > >= == != & ^ | && ||"
.It Assignment operators
.Li "= += -= *= /= %= <<= >>= &= ^= |="
.It Short-circuit evaluation
The
.Li &&
and
.Li ||
operators always evaluate both sides.
This is a bug.
.El
.Pp
The result of the expression is substituted in decimal.
.Ss White Space Splitting (Field Splitting)
After parameter expansion, command substitution, and
arithmetic expansion the shell scans the results of