Linux Shell 數學運算

來源:互聯網
上載者:User

Linux Shell 數學運算

    在Linux中直接使用數學運算子進行數學運算往往得不到我們想要的計算結果。要在Shell中進行數學運算,我們需要藉助點小手段。目前,Linux Shell中進行數學運算的方法主要有三種:bc、expr、let。

1 bc1.1 命令列方式

    在bash介面,直接輸入bc或者bc -q,就可以進去bc的命令列,通過使用數學運算子能夠得到我們想要的結果:

 [scott@centos1 ~]$ bc -  +    -  -  *    /    %    ^    scale=;/  .  %    scale=;/    %  

 

輸入運算數和運算子號,斷行符號即可得到運算結果。通過設定scale,可以定義當前的小數點精度,對除法、取餘和冪運算有效。

這種方式只能在bc的命令列中進行,在代碼中當然不能這樣幹了。

1.2 管道方式
 [scott@centos1 ~]$  +|    [scott@centos1 ~]$  -|  -  [scott@centos1 ~]$  *|    [scott@centos1 ~]$  /|    [scott@centos1 ~]$  %|    [scott@centos1 ~]$  |  .  [scott@centos1 ~]$  |  .  [scott@centos1 ~]$  |    [scott@centos1 ~]$  |    [scott@centos1 ~]$  ^|  

 

    這種管道方式在shell中應用的更多一些,同樣可以在運算的時候加上精度的限制。

1.3 進位轉換
 [scott@centos1 ~]$  |    [scott@centos1 ~]$  |    [scott@centos1 ~]$  |  

 

    上文的例子,是把幾種進位都轉化為10進位。

1.4 運算式運算
 [scott@centos1 ~]$ vim bc-  [scott@centos1 ~]$ bc -q bc-    -      .  

 

    其中,bc-test.bc的內容為:

+-*/=;/=;/

 

就是運算式的集合。

2 expr

    expr是個很強大的命令,可以進行數學運算,也可以進行字串的操作等。先看下數學運算的功能。

 [scott@centos1 ~]$  +  +  [scott@centos1 ~]$   +    [scott@centos1 ~]$   +     [scott@centos1 ~]$   *     [scott@centos1 ~]$   \*     [scott@centos1 ~]$   /     [scott@centos1 ~]$   %   

 

    expr不支援浮點運算,不支援冪乘運算,在運算的時候可要注意運算子和運算數的分離,寫在一起可是不識別的,另外,乘法有點特殊,需要轉義。

    下面看看expr的字串操作。

 [scott@centos1 ~]$ =  [scott@centos1 ~]$  length $    [scott@centos1 ~]$  index $     [scott@centos1 ~]$  substr $      [scott@centos1 ~]$  substr $    789asdfg

 

    上例分別利用expr命令進行了計算字串長度、擷取字串或者字元的首次出現位置、取指定位置開始的限定長度的字元字串,需要注意的是expr中的下標是從1開始的。

3 let
 [scott@centos1 ~]$ let a=+  [scott@centos1 ~]$     [scott@centos1 ~]$ let a=*  [scott@centos1 ~]$     [scott@centos1 ~]$ let a=/  [scott@centos1 ~]$     [scott@centos1 ~]$ let a=%  [scott@centos1 ~]$     [scott@centos1 ~]$ let a=^  [scott@centos1 ~]$     [scott@centos1 ~]$ let a=**  [scott@centos1 ~]$   

 

    需要注意的是,let命令裡的冪乘運算不是^,而是**。

4 其他方式
 [scott@centos1 ~]$  $((+    [scott@centos1 ~]$  $((*    [scott@centos1 ~]$  $((**    [scott@centos1 ~]$  $((((+))*    [scott@centos1 ~]$  `  Fri Aug  :: PDT   [scott@centos1 ~]$  ` +%Y%m%  

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.