<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??一站式輕松地調用各大LLM模型接口,支持GPT4、智譜、豆包、星火、月之暗面及文生圖、文生視頻 廣告
                總第6篇 Bash中的數學運算并不如其他語言般簡便,因為Bash把所有變量都視作字符串,所以a=1+2,a并不等于3,而是等于字符串1+2。 為了解決這一問題,有如下幾種方案。 ## 運算符[ ] ~~~ a=2 b=3 c=$[a+b] d=$[a-b] e=$[a*b] f=$[a/b] g=$[a%b] ~~~ $符只是取變量值的意思。中括號和里面的表達式可以視作一個變量。在中括號中引用變量可以直接使用變量名,也可以使用$加變量名。比如: `c=$[$a+$b] ` 當然,你可以直接使用字面值: ~~~ c=$[2+3] d=$[2-3] e=$[2*3] f=$[2/3] ~~~ 需要注意的是: - 該運算只支持整數,如果a或者b是小數,則會報錯。運算結果是小數的也會自動取整。 - 該運算[ ]的操作符(+-*/)和變量之間可以有空格。即可寫作c=$[a + b] ## 運算符(()) 其用法和[ ]類似,注意事項也差不多。 ## expr及其反引用 ### 普通計算 expr是一個外部命令(非Bash本身的命令),所以它是獨立與Bash的,同樣可以在其他Shell中使用。 ~~~ a=2 b=3 expr $a + $b expr $a - $b expr $a \* $b expr $a / $b expr $a % $b ~~~ 需要注意的是: - 操作符和操作數之間**一定要**有空格間隔 - 操作數(即變量)前必須有$符 - 乘號*,要用反斜杠\進行轉義 - 該命令會將計算結果打印到標準輸出 - 僅支持整數運算 - 也可以直接使用數字的字面值 expr除了支持以上運算外,還支持其他運算,大家可以自行 man expr來查看。 ### 賦值 那么如何將expr的計算結果賦值給一個變量呢?答案是:反引用。 我在[《變量及其初始化》](http://blog.csdn.net/guodongxiaren/article/details/38402577#t8)一節中介紹過用命令替換初始化的概念了。反引用只是命令替換方式的一種而已。 ~~~ c=`expr $a + $b` ~~~ ## 用bc進行浮點數運算 ### 基本格式 以上我們介紹的各種數值計算方案,不管是shell內部的還是外部的,都有一個問題,那就是不支持小數運算。這應該是shell本身的使用環境所決定的,實際在腳本中進行小數運算的情況可能并不多。 如果我們想進行浮點數的運算該怎么辦呢?答案是利用外部工具(或者說命令)bc。bc是一個交互式的計算器。你可以在shell中鍵入bc來進入bc的命令提示符。但同樣bc也支持寫入到腳本中來進行數值計算。這需要用到管道,所謂管道就是將前一個命令的標準輸出,作為標準輸入傳遞給后面的命令。關于管道的更多概念,在以后講IO操作的時候會提及。 ~~~ echo '45.36-22.33'|bc ~~~ 單引號雙引號,這里無所謂。實現的過程就是將一個數學表達式傳遞給bc這個計算器。然后bc會將結果打印到標準輸出。 ### 設置精度 浮點運算,有一個很重要的概念就是精度。bc這里的精度指的的是小數的位數。在使用bc來進行除法運算的時候,你會發現默認是取整的,即沒有小數部分。 比如:echo '2/3'|bc,它輸出的是0。因為bc的默認精度是0。你可能會想到的解決方案是:echo '2.0/3'|bc。但是輸出結果依舊是0。 其他運算,比如加、減和乘。都會自動取操作數中的最大精度為輸出結果的精度。 ~~~ echo '2.0*3.00'|bc echo '2.25+4.5'|bc echo '5.66-7.888'|bc ~~~ 輸出結果為: ~~~ 6.00 6.75 -2.228 ~~~ 但是除法不行,你必須手動設置。 ~~~ echo 'scale=3;2/3'|bc .666 ~~~ .666為輸出的結果。因為設置了精度scale=3。前導0會被忽略。 bc功能強大,你甚至能直接利用bc來進行進制轉換。 ### 進制轉換 ![](https://box.kancloud.cn/2016-02-19_56c6cdb37c1e1.jpg) obase為輸出的進制,ibase為輸入的進制。 ## 自增自減 C類語言中都支持自增自減操作。即a++,b--,c+=2,d-=3這種類型的計算。其含義就不再介紹了。 進行自增自減運算需要注意的有兩點: 1. 操作數必須是變量 1. 操作數必須是整數 Bash中要實現這一功能需要借助命令***let***(內部命令)。 ![](https://box.kancloud.cn/2016-02-19_56c6cdb38e8a0.jpg) 本系列(玩轉Bash腳本)更多文章,請訪問:[http://blog.csdn.net/column/details/wanbash.html](http://blog.csdn.net/column/details/wanbash.html)
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看