UNIX in a Nutshell: System V Edition

UNIX in a Nutshell: System V EditionSearch this book
Previous: 4.3 VariablesChapter 4
The Bourne Shell and Korn Shell
Next: 4.5 Command History
 

4.4 Arithmetic Expressions

The Korn shell's let command performs arithmetic. ksh88 is restricted to integer arithmetic. ksh93 can do floating-point arithmetic as well. The Korn shell provides a way to substitute arithmetic values (for use as command arguments or in variables); base conversion is also possible:

$(( expr ))

Use the value of the enclosed arithmetic expression.

B#n

Interpret integer n in numeric base B. For example, 8#100 specifies the octal equivalent of decimal 64.

4.4.1 Operators

The Korn shell uses arithmetic operators from the C programming language; in decreasing order of precedence.

Operator

Description

++ --

Auto-increment and auto-decrement, both prefix and postfix. ksh93 only.

+

Unary plus. ksh93 only.

-

Unary minus.

! ~

Logical negation; binary inversion (one's complement).

* / %

Multiplication; division; modulus (remainder).

+ -

Addition; subtraction.

<< >>

Bitwise left shift; bitwise right shift.

<= >=

Less than or equal to; greater than or equal to.

< >

Less than; greater than.

== !=

Equality; inequality (both evaluated left to right).

&

Bitwise AND.

^

Bitwise exclusive OR.

|

Bitwise OR.

&&

Logical AND (short-circuit).

||

Logical OR (short-circuit).

?:

Inline conditional evaluation. ksh93 only.

*= /= %=

Assignment.

= += -=

<<= >>=

&= ^= |=

,

Sequential expression evaluation. ksh93 only.

4.4.2 Built-in Mathematical Functions (ksh93 only)

ksh93 provides access to the standard set of mathematical functions. They are called using C function call syntax.

NameFunctionNameFunction
abs

Absolute value

log

Natural logarithm

acos

Arc cosine

sin

Sine

asin

Arc sine

sinh

Hyperbolic sine

cos

Cosine

sqrt

Square root

cosh

Hyperbolic cosine

tan

Tangent

exp

Exponential function

tanh

Hyperbolic tangent

int

Integer part of floating-point number

  

4.4.3 Examples

See the let command for more information and examples:

let "count=0" "i = i + 1"		Assign i and count
let "num % 2"			Test for an even number
(( percent >= 0 && percent <= 100 ))	Test the range of a value


Previous: 4.3 VariablesUNIX in a Nutshell: System V EditionNext: 4.5 Command History
4.3 VariablesBook Index4.5 Command History

The UNIX CD Bookshelf NavigationThe UNIX CD BookshelfUNIX Power ToolsUNIX in a NutshellLearning the vi Editorsed & awkLearning the Korn ShellLearning the UNIX Operating System