問題
本案例要求熟悉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可執行...