問題
本案例要求熟悉linux shell環境的特點,主要練習以下操作:
使用expr、$[ ]、let等整數運算工具:定義變數x=1234,然後計算x與78的四則運算及求模結果
使用bc實現小數運算操作:以互動方式計算12.34與56.78的四則運算結果,另外再以非互動方式重複上述計算,最多顯示4位小數
步驟實現此案例需要按照如下步驟進行。
1)使用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
shell指令碼中的數值運算
shell中的變數沒有如c語言中字元型 整型 浮點型的區分,預設將變數賦值當做字元,怎樣才能讓shell將變數賦值當做數值型呢,答案是用 一,和,包含的數學算式可以被shell正確識別。root localhost cat test.sh 例1。bin bash var1 100 var2 200 ...
shell數值運算
原文 1 錯誤方法舉例 a var 1 1 echo var 輸出的結果是1 1,悲劇,呵呵 b var 1 var var 1 echo var 輸出結果是1 1,依然悲劇,呵呵 2 正確方法 1 使用let var 1 let var 1 echo var 輸出結果為2,這次沒有悲劇 注意 a ...
Shell中的數值運算及處理
幾個數值處理技巧 小數運算操作 expr 數值1 運算子 數值2 注 使用 使需要轉義如果數值是變數的話,直接使用變數名,如 num1 10 num2 20 echo num1 num2 使用 時不需要轉義 格式 let 變數 let 變數,let 變數 let 變數,let 變數 增量,let 變...