arithexp.html

来自「BASH Shell 编程 经典教程 《高级SHELL脚本编程》中文版」· HTML 代码 · 共 305 行

HTML
305
字号
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><HTML><HEAD><TITLE>算术扩展</TITLE><METANAME="GENERATOR"CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINKREL="HOME"TITLE="高级Bash脚本编程指南"HREF="index.html"><LINKREL="UP"TITLE="进阶"HREF="part3.html"><LINKREL="PREVIOUS"TITLE="命令替换"HREF="commandsub.html"><LINKREL="NEXT"TITLE="I/O重定向"HREF="io-redirection.html"></HEAD><BODYCLASS="CHAPTER"BGCOLOR="#FFFFFF"TEXT="#000000"LINK="#0000FF"VLINK="#840084"ALINK="#0000FF"><DIVCLASS="NAVHEADER"><TABLESUMMARY="Header navigation table"WIDTH="100%"BORDER="0"CELLPADDING="0"CELLSPACING="0"><TR><THCOLSPAN="3"ALIGN="center">高级Bash脚本编程指南: 一本深入学习shell脚本艺术的书籍</TH></TR><TR><TDWIDTH="10%"ALIGN="left"VALIGN="bottom"><AHREF="commandsub.html"ACCESSKEY="P">前一页</A></TD><TDWIDTH="80%"ALIGN="center"VALIGN="bottom"></TD><TDWIDTH="10%"ALIGN="right"VALIGN="bottom"><AHREF="io-redirection.html"ACCESSKEY="N">下一页</A></TD></TR></TABLE><HRALIGN="LEFT"WIDTH="100%"></DIV><DIVCLASS="CHAPTER"><H1><ANAME="ARITHEXP"></A>15. 算术扩展</H1><P><ANAME="ARITHEXPREF"></A>算术扩展提供了一种强力工具, 			  可以在脚本中执行(整型)算法操作. 			  可以使用<AHREF="commandsub.html#BACKQUOTESREF">backticks</A>, 			  <AHREF="dblparens.html">double parentheses</A>, 			  或<AHREF="internal.html#LETREF">let</A>来将字符串转换为数字表达式. </P><P></P><DIVCLASS="VARIABLELIST"><P><B><ANAME="ARITHEXPVAR1"></A>一些变化</B></P><DL><DT>使用后置引用的算术扩展(通常都是和<AHREF="moreadv.html#EXPRREF">expr</A>一起使用)</DT><DD><P><TABLEBORDER="0"BGCOLOR="#E0E0E0"WIDTH="90%"><TR><TD><FONTCOLOR="#000000"><PRECLASS="PROGRAMLISTING">  1&nbsp;z=`expr $z + 3`          # 'expr'命令将会执行这个扩展. </PRE></FONT></TD></TR></TABLE></P></DD><DT>使用双括号形式的算术扩展, 也可以使用<BCLASS="COMMAND">let</B>命令</DT><DD><P>后置引用形式的算术扩展已经被双括号形式所替代了 -- 		   <KBDCLASS="USERINPUT">((...))</KBD>和<KBDCLASS="USERINPUT">$((...))</KBD> 		  -- 当然也可以使用非常方便的<BCLASS="COMMAND">let</B>结构. </P><P>	      <TABLEBORDER="0"BGCOLOR="#E0E0E0"WIDTH="90%"><TR><TD><FONTCOLOR="#000000"><PRECLASS="PROGRAMLISTING">  1&nbsp;z=$(($z+3))  2&nbsp;z=$((z+3))                                  #  也正确.   3&nbsp;                                            #  使用双括号的形式,   4&nbsp;                                            #+ 参数解引用  5&nbsp;                                            #+ 是可选的.   6&nbsp;  7&nbsp;# $((EXPRESSION))是算数表达式.              #  不要与命令替换  8&nbsp;                                            #+ 相混淆.   9&nbsp; 10&nbsp; 11&nbsp; 12&nbsp;# 使用双括号的形式也可以不用给变量赋值.  13&nbsp; 14&nbsp;  n=0 15&nbsp;  echo "n = $n"                             # n = 0 16&nbsp; 17&nbsp;  (( n += 1 ))                              # 递增.  18&nbsp;# (( $n += 1 )) is incorrect! 19&nbsp;  echo "n = $n"                             # n = 1 20&nbsp; 21&nbsp; 22&nbsp;let z=z+3 23&nbsp;let "z += 3"  #  使用引用的形式, 允许在变量赋值的时候存在空格.  24&nbsp;              #  'let'命令事实上执行得的是算术赋值,  25&nbsp;              #+ 而不是算术扩展. </PRE></FONT></TD></TR></TABLE>	    </P><P>下边是一些在脚本中使用算术扩展的例子:        <P></P><OLTYPE="1"><LI><P><AHREF="moreadv.html#EX45">例子 12-9</A></P></LI><LI><P><AHREF="loops1.html#EX25">例子 10-14</A></P></LI><LI><P><AHREF="arrays.html#EX66">例子 26-1</A></P></LI><LI><P><AHREF="arrays.html#BUBBLE">例子 26-11</A></P></LI><LI><P><AHREF="contributed-scripts.html#TREE">例子 A-17</A></P></LI></OL>     </P></DD></DL></DIV></DIV><DIVCLASS="NAVFOOTER"><HRALIGN="LEFT"WIDTH="100%"><TABLESUMMARY="Footer navigation table"WIDTH="100%"BORDER="0"CELLPADDING="0"CELLSPACING="0"><TR><TDWIDTH="33%"ALIGN="left"VALIGN="top"><AHREF="commandsub.html"ACCESSKEY="P">前一页</A></TD><TDWIDTH="34%"ALIGN="center"VALIGN="top"><AHREF="index.html"ACCESSKEY="H">首页</A></TD><TDWIDTH="33%"ALIGN="right"VALIGN="top"><AHREF="io-redirection.html"ACCESSKEY="N">下一页</A></TD></TR><TR><TDWIDTH="33%"ALIGN="left"VALIGN="top">命令替换</TD><TDWIDTH="34%"ALIGN="center"VALIGN="top"><AHREF="part3.html"ACCESSKEY="U">上一级</A></TD><TDWIDTH="33%"ALIGN="right"VALIGN="top">I/O重定向</TD></TR></TABLE></DIV></BODY></HTML>

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?