sh(1): Add a brief summary of arithmetic expressions.
This commit is contained in:
parent
b8370f59bd
commit
36cf3efe41
41
bin/sh/sh.1
41
bin/sh/sh.1
@ -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
|
||||
|
Loading…
x
Reference in New Issue
Block a user