📄 ch04_04.htm
字号:
<html><head><title>Arithmetic Expressions (UNIX in a Nutshell: System V Edition)</title><link rel="stylesheet" type="text/css" href="../style/style1.css" /><meta name="DC.Creator" content="Arnold Robbins" /><meta name="DC.Format" content="text/xml" scheme="MIME" /><meta name="DC.Language" content="en-US" /><meta name="DC.Publisher" content="O'Reilly & Associates, Inc." /><meta name="DC.Source" scheme="ISBN" content="1-56592-427-4" /><meta name="DC.Subject.Keyword" content="stuff" /><meta name="DC.Title" content="UNIX in a Nutshell: System V Edition" /><meta name="DC.Type" content="Text.Monograph" /></head><body bgcolor="#ffffff"><img src="gifs/smbanner.gif" usemap="#banner-map" border="0" alt="Book Home" /><map name="banner-map"><area shape="rect" coords="1,-2,616,66" href="index.htm" alt="Book Title" /><area shape="rect" coords="629,-11,726,25" href="jobjects/fsearch.htm" alt="Search this book" /></map><div class="navbar"><table width="684" border="0"><tr><td align="left" valign="top" width="228"><a href="ch04_03.htm"><img src="../gifs/txtpreva.gif" alt="Previous" border="0" /></a></td><td align="center" valign="top" width="228" /><td align="right" valign="top" width="228"><a href="ch04_05.htm"><img src="../gifs/txtnexta.gif" alt="Next" border="0" /></a></td></tr></table></div><h2 class="sect1">4.4. Arithmetic Expressions</h2><p><a name="unut-ch-4-ix-arithmetic-expressions-ksh-shell" /><a name="unut-ch-4-ix-ksh-korn-shell-arithmetic-expressions" />The Korn shell's <tt class="literal">let</tt> command performs arithmetic.<tt class="literal">ksh88</tt> is restricted to integer arithmetic.<tt class="literal">ksh93</tt> 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:</p><table border="1" cellpadding="3"><tr><td><p><tt class="literal">$((</tt> <em class="replaceable"><tt>expr</tt></em> <tt class="literal">))</tt></p></td><td><p>Use the value of the enclosed arithmetic expression.</p></td></tr><tr><td><p><em class="replaceable"><tt>B</em><tt class="literal">#</tt><em class="replaceable">n</tt></em></p></td><td><p>Interpret integer <em class="emphasis">n</em> in numeric base <em class="emphasis">B</em>.For example,<tt class="literal">8#100</tt> specifies the octal equivalent of decimal 64.</p></td></tr></table><p><a name="unut-ch-4-sect-4.1" /><div class="sect2"><h3 class="sect2">4.4.1. Operators</h3><p>The Korn shell uses arithmetic operators from the C programming language; in decreasing order of precedence.</p><table border="1" cellpadding="3"><tr><th><p><em class="emphasis">Operator</em></p></th><th><p><em class="emphasis">Description</em></p></th></tr><tr><td><p><tt class="literal">++ --</tt></p></td><td><p>Auto-increment and auto-decrement, both prefix and postfix.<tt class="literal">ksh93</tt> only.<a name="IXT-4-122760" /><a name="IXT-4-122761" /></p></td></tr><tr><td><p><tt class="literal">+</tt></p></td><td><p>Unary plus. <tt class="literal">ksh93</tt> only.<a name="IXT-4-122762" /></p></td></tr><tr><td><p><tt class="literal">-</tt></p></td><td><p>Unary minus.<a name="IXT-4-122763" /></p></td></tr><tr><td><p><tt class="literal">! ~</tt></p></td><td><p><a name="IXT-4-122764" /><a name="IXT-4-122765" />Logical negation; binary inversion (one's complement).</p></td></tr><tr><td><p><tt class="literal">* / %</tt></p></td><td><p>Multiplication; division; modulus (remainder).<a name="IXT-4-122766" /><a name="IXT-4-122767" /><a name="IXT-4-122768" /></p></td></tr><tr><td><p><tt class="literal">+ -</tt></p></td><td><p>Addition; subtraction.</p></td></tr><tr><td><p><tt class="literal"><< >></tt></p></td><td><p>Bitwise left shift; bitwise right shift.<a name="IXT-4-122769" /><a name="IXT-4-122770" /></p></td></tr><tr><td><p><tt class="literal"><= >=</tt></p></td><td><p>Less than or equal to; greater than or equal to.<a name="IXT-4-122771" /><a name="IXT-4-122772" /></p></td></tr><tr><td><p><tt class="literal">< ></tt></p></td><td><p>Less than; greater than.<a name="IXT-4-122773" /><a name="IXT-4-122774" /></p></td></tr><tr><td><p><tt class="literal">== !=</tt></p></td><td><p>Equality; inequality (both evaluated left to right).<a name="IXT-4-122775" /><a name="IXT-4-122776" /></p></td></tr><tr><td><p><tt class="literal">&</tt></p></td><td><p>Bitwise AND.<a name="IXT-4-122777" /></p></td></tr><tr><td><p><tt class="literal">^</tt></p></td><td><p>Bitwise exclusive OR.<a name="IXT-4-122778" /></p></td></tr><tr><td><p><tt class="literal">|</tt></p></td><td><p>Bitwise OR.<a name="IXT-4-122779" /></p></td></tr><tr><td><p><tt class="literal">&&</tt></p></td><td><p>Logical AND (short-circuit).<a name="IXT-4-122780" /></p></td></tr><tr><td><p><tt class="literal">||</tt></p></td><td><p>Logical OR (short-circuit).<a name="IXT-4-122781" /></p></td></tr><tr><td><p><tt class="literal">?:</tt></p></td><td><p>Inline conditional evaluation. <tt class="literal">ksh93</tt> only.</p></td></tr><a name="IXT-4-122782" /><a name="IXT-4-122783" /><a name="IXT-4-122784" /><a name="IXT-4-122785" /><a name="IXT-4-122786" /><tr><td><p><tt class="literal">*= /= %=</tt></p><p><tt class="literal">= += -=</tt></p><p><tt class="literal"><<= >>=</tt></p><p><tt class="literal">&= ^= |=</tt></p></td><td><p>Assignment.</p></td></tr><a name="IXT-4-122787" /><a name="IXT-4-122788" /><a name="IXT-4-122789" /><a name="IXT-4-122790" /><a name="IXT-4-122791" /><a name="IXT-4-122792" /><a name="IXT-4-122793" /><tr><td><p><tt class="literal">,</tt></p></td><td><p>Sequential expression evaluation. <tt class="literal">ksh93</tt> only.<a name="IXT-4-122794" /></p></td></tr></table><p></div><a name="unut-ch-4-sect-4.2" /><div class="sect2"><h3 class="sect2">4.4.2. Built-in Mathematical Functions (ksh93 only)</h3><p><tt class="literal">ksh93</tt> provides access to the standard set ofmathematical functions. They are called using C function callsyntax.<a name="IXT-4-122795" /></p><table border="1" cellpadding="3"><tr><th><em class="emphasis">Name</em></th><th><em class="emphasis">Function</em></th><th><em class="emphasis">Name</em></th><th><em class="emphasis">Function</em></th></tr><tr><td><tt class="literal">abs</tt></td><td><p>Absolute value</p></td><td><tt class="literal">log</tt></td><td><p>Natural logarithm</p></td></tr><tr><td><tt class="literal">acos</tt></td><td><p>Arc cosine</p></td><td><tt class="literal">sin</tt></td><td><p>Sine</p></td></tr><tr><td><tt class="literal">asin</tt></td><td><p>Arc sine</p></td><td><tt class="literal">sinh</tt></td><td><p>Hyperbolic sine</p></td></tr><tr><td><tt class="literal">cos</tt></td><td><p>Cosine</p></td><td><tt class="literal">sqrt</tt></td><td><p>Square root</p></td></tr><tr><td><tt class="literal">cosh</tt></td><td><p>Hyperbolic cosine</p></td><td><tt class="literal">tan</tt></td><td><p>Tangent</p></td></tr><tr><td><tt class="literal">exp</tt></td><td><p>Exponential function</p></td><td><tt class="literal">tanh</tt></td><td><p>Hyperbolic tangent</p></td></tr><tr><td><tt class="literal">int</tt></td><td><p>Integer part of floating-point number</p></td><td></td><td> </td></tr></table><p></div><a name="unut-ch-4-sect-4.3" /><div class="sect2"><h3 class="sect2">4.4.3. Examples</h3><p>See the <tt class="literal">let</tt> command for more information and examples:</p><blockquote><pre class="code">let "count=0" "i = i + 1" <i class="lineannotation">Assign i and count</i>let "num % 2" <i class="lineannotation"> Test for an even number</i>(( percent >= 0 && percent <= 100 )) <i class="lineannotation">Test the range of a value</i></pre></blockquote><p><a name="IXT-4-122796" /><a name="IXT-4-122797" /></p></div><hr width="684" align="left" /><div class="navbar"><table width="684" border="0"><tr><td align="left" valign="top" width="228"><a href="ch04_03.htm"><img src="../gifs/txtpreva.gif" alt="Previous" border="0" /></a></td><td align="center" valign="top" width="228"><a href="index.htm"><img src="../gifs/txthome.gif" alt="Home" border="0" /></a></td><td align="right" valign="top" width="228"><a href="ch04_05.htm"><img src="../gifs/txtnexta.gif" alt="Next" border="0" /></a></td></tr><tr><td align="left" valign="top" width="228">4.3. Variables</td><td align="center" valign="top" width="228"><a href="index/index.htm"><img src="../gifs/index.gif" alt="Book Index" border="0" /></a></td><td align="right" valign="top" width="228">4.5. Command History</td></tr></table></div><hr width="684" align="left" /><img src="../gifs/navbar.gif" usemap="#library-map" border="0" alt="Library Navigation Links" /><p><p><font size="-1"><a href="copyrght.htm">Copyright © 2003</a> O'Reilly & Associates. All rights reserved.</font></p><map name="library-map"><area shape="rect" coords="1,0,88,96" href="../index.htm"><area shape="rect" coords="90,0,165,96" href="../upt/index.htm"><area shape="rect" coords="168,1,253,107" href="../mac/index.htm"><area shape="rect" coords="255,0,335,97" href="../korn/index.htm"><area shape="rect" coords="337,0,415,109" href="../unixnut/index.htm"><area shape="rect" coords="417,0,512,122" href="../sedawk/index.htm"><area shape="rect" coords="514,0,605,105" href="../lunix/index.htm"><area shape="rect" coords="611,2,694,121" href="../vi/index.htm"></map></body></html>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -