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 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 z=$(($z+3)) 2 z=$((z+3)) # 也正确. 3 # 使用双括号的形式, 4 #+ 参数解引用 5 #+ 是可选的. 6 7 # $((EXPRESSION))是算数表达式. # 不要与命令替换 8 #+ 相混淆. 9 10 11 12 # 使用双括号的形式也可以不用给变量赋值. 13 14 n=0 15 echo "n = $n" # n = 0 16 17 (( n += 1 )) # 递增. 18 # (( $n += 1 )) is incorrect! 19 echo "n = $n" # n = 1 20 21 22 let z=z+3 23 let "z += 3" # 使用引用的形式, 允许在变量赋值的时候存在空格. 24 # 'let'命令事实上执行得的是算术赋值, 25 #+ 而不是算术扩展. </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 + -
显示快捷键?