Linux Shell中的數值運算

2021-09-23 18:27:38 字數 2307 閱讀 1133

問題

本案例要求熟悉linux shell環境的特點,主要練習以下操作:

使用expr、katex parse error: expected 'eof', got '\*' at position 168: …expr命令 乘法操作應採用 \̲*̲ 轉義,避免被作為shell通…符號。

首先定義變數x=1234,然後分別計算與78的加減乘除和求模運

算結果:

[root@svr5 ~]# x=1234 //定義變數x

[root@svr5 ~]# expr $x + 78 //加法

1312

[root@svr5 ~]# expr $x - 78 //減法

1156

[root@svr5 ~]# expr $x \* 78 //乘法,操作符應新增\轉義

96252

[root@svr5 ~]# expr $x / 78 //除法,僅保留整除結果

15[root@svr5 ~]# expr $x % 78 //求模

64

2)使用[]或

或(())表示式

乘法操作*無需轉義,運算子兩側可以無空格;引用變數可省略 $ 符號;計算結果替換表示式本身,可結合echo命令輸出。

同樣對於變數x=1234,分別計算與78的加減乘除和求模運算結果:

[root@svr5 ~]# x=1234   

[root@svr5 ~]# echo $[x+78]

1312

[root@svr5 ~]# echo $[x-78]

1156

[root@svr5 ~]# echo $[x*78]

96252

[root@svr5 ~]# echo $[x/78]

15[root@svr5 ~]# echo $[x%78]

64

3)使用let命令

expr或[]、

、(())方式只進行運算,並不會改變變數的值;而let命令可以直接對變數值做運算再儲存新的值。因此變數x=1234,在執行let運算後的值會變更;另外,let運算操作並不顯示結果,但是可以結合echo命令來檢視:

[root@svr5 ~]# x=1234  

[root@svr5 ~]# let x+=78 ; echo $x

1312

[root@svr5 ~]# let x-=78 ; echo $x

1234

[root@svr5 ~]# let x*=78 ; echo $x

96252

[root@svr5 ~]# let x/=78 ; echo $x

1234

[root@svr5 ~]# let x%=78 ; echo $x

64

[root@svr5 ~]# bc 

bc 1.06.95

this is free software with absolutely no warranty.

for details type `warranty'.

12.34+56.78 //加法

69.12

12.34-56.78 //減法

-44.44

12.34*56.78 //乘法

700.66

12.34/56.78 //除法

0quit //退出互動計算器

[root@svr5 ~]#

2)bc非互動式運算

將需要運算的表示式通過管道操作交給bc運算。注意,小數字的長度可採用scale=n限制,除此以外也受參與運算的數值的小數字影響。以計算小數12.34與5.678的四則運算為例,相關操作如下:

[root@svr5 ~]# echo 'scale=4;12.34+5.678' | bc

18.018

[root@svr5 ~]# echo 'scale=4;12.34-5.678' | bc

6.662

[root@svr5 ~]# echo 'scale=4;12.34*5.678' | bc

70.0665

[root@svr5 ~]# echo 'scale=4;12.34/5.678' | bc

2.1733

linux shell數值運算

1 bc命令 1直接進入其命令列執行 bc q 回車 2寫個檔案一起執行 bc q bc test.bc 純文字 3直接在shell中管道符交由bc執行數 算 echo 2 3 bc 4可處理進製轉換,設定精度 2 expr命令 可以是數字或者字串 3let 命令 4 expr 5 a 這種自加操作...

Linux Shell優雅的判斷命令是否執行成功

在linux上面開發,一般我們會寫很長的指令碼檔案 sh 有時候指令碼的某一行命令可能執行不成功,那麼在指令碼中我們有沒有優雅的方法讓知道指令碼是否執行成功,再去執行相應的命令。比如,我們在指令碼中要建立乙個目錄,有時候因為目錄許可權的問題,不一定成功,那麼有哪些方法讓我們去知道是否成功,以及後續進...

Linux shell中的if判斷

e file 如果 file存在,則為真 d file 如果 file為目錄,則為真 f file 如果 file為常規檔案,則為真 l file 如果 file為符號鏈結,則為真 r file 如果 file可讀,則為真 w file 如果 file可寫,則為真 x file 如果 file可執行...