Shell 數值計算

2021-09-14 03:08:57 字數 4063 閱讀 9441

一、整數計算

shell中(())、let 、$ 、expr能進行整數運算

$:

這個方法很方便。很容易使用,推薦使用

$的用法:

$[表示式]
示例:

[root@localhost shell_protest]# echo $[1+2]3[root@localhost shell_protest]# echo $[1*2]2[root@localhost shell_protest]# echo $[11/2]5[root@localhost shell_protest]# echo $[11-2]9[root@localhost shell_protest]# echo $[(1+2)*2]6
let方法:

shell let 命令的語法格式為:

let 表示式
或者

let "表示式"
或者

let '表示式'
它們都等價於((表示式))

當表示式中含有 shell 特殊字元(例如 |)時,需要用雙引號" "或者單引號' '將表示式包圍起來

let的計算結果,如果沒有變數去接受,會被丟棄掉

[root@localhost shell_protest]# let 1+1[root@localhost shell_protest]# let a=1+1[root@localhost shell_protest]# echo $a2
let和(())很相似。

let的缺點是不能

echo let 1+1
而(())可以實現

echo $((1+1))
[root@localhost shell_protest]# i=2[root@localhost shell_protest]# let i+=8[root@localhost shell_protest]# echo $i10
let i+=8的效率據說是比((i+=8))要低

[root@localhost shell_protest]# a=10[root@localhost shell_protest]# b=34[root@localhost shell_protest]# let a+=6 c=a+b[root@localhost shell_protest]# echo $a $c16 50
let可以實現多個表示式計算

(())方法:

(())使用起來還是比較簡便的,不僅可以計算算術值,還可以計算邏輯值

使用方法:

假如計算的結果不賦值,就直接放到(())裡面。eg:((a=1+3/2-1))假如計算的結果要給外面其他變數賦值,就要加$在(())外。eg:a=$((1+$a%3))
示例:

++++++++++計算算術值+++++++++++++[root@localhost shell_protest]# ((a=1+3**3-4%3))[root@localhost shell_protest]# echo $a27+++++++++計算邏輯值+++++++++++++++[root@localhost shell_protest]# ((a=(1==2)))[root@localhost shell_protest]# echo $a0[root@localhost shell_protest]# ((a=(1==1)))[root@localhost shell_protest]# echo $a1
關於:a++與++a

echo $((++a)) 和 echo $((--a))

echo $((a++)) 和 echo $((a--))

這種型別的題目和平常我們寫的其他程式是一樣的

++a是先++再輸出

a++是先輸出再++

[root@localhost shell_protest]# a=1[root@localhost shell_protest]# echo $((a++))1[root@localhost shell_protest]# echo $((++a))3
以上的方法都只能做整數運算,如果想使用小數計算可以繼續看下面的介紹!

二、小數計算

兩種方法:

awk 和 |bc

awk:

awk計算小數的格式:

echo 'awk -v x=1.2 -v y=2.3 `begin`'-v:傳值,假如有變數 可以寫成x=$a%.3f是控制 小數需要保留幾位
使用方法awk示例:

[root@localhost shell_protest]# sh xiaoshu.sh7.3510.522.050.00—————————————source—————————————————————————[root@localhost shell_protest]# cat xiaoshu.shecho `awk -v x=2.1 -v y=3.5 'begin'`s=10.5echo $secho `awk -v x=2.1 -v y="$s" 'begin'`echo `awk 'begin'`#一定要先把變數用 -v 賦值,否則awk無法計算
bc方法:

使用的格式:

[root@localhost shell_protest]# s1=$(echo "scale=2;5/4"|bc)scale=n n代表保留幾位小鼠5/4是計算表示式
示例:

[root@localhost shell_protest]# s1=$(echo "scale=2;5/4"|bc)[root@localhost shell_protest]# echo $s11.25[root@localhost shell_protest]# echo $(echo "scale=3;1.1*2.3"|bc)2.53

Shell 數值計算

開啟文字編輯器 可以使用 vi vim 命令來建立檔案 新建乙個檔案 test.sh,擴充套件名為 sh sh代表shell 副檔名並不影響指令碼執行,只是起到乙個見名知意的作用。指令碼的第一行一般是 bin bash,告訴系統其後路徑所指定的程式即是解釋此指令碼檔案的 shell 程式。預設用 v...

shell變數的數值計算

root foundation63 a 123 root foundation63 expr a 10 133 root foundation63 expr a 10 113 root foundation63 expr a 10 此命令不能識別,必須加 root foundation63 echo...

shell 變數的數值計算

變數的數值計算覺的有如下命令 let expr bc 下面看看數值計算的運算子 此法很常用且效率高,用於執行整數型的計算,不支援浮點型。如圖 root localhost a 1 2 3 4 3 root localhost echo a 8 root localhost b 1 2 3 4 3 r...