Shell中的算術運算 譯

2022-02-19 13:23:43 字數 2484 閱讀 1315

儘管shell中的變數被預設地看做是string型別,而非number,但是shell本身仍然支援算術運算。

主要有以下5種方式。

$ n=6/3

$ echo $n

6/3$ declare -i n #將n宣告為乙個整數(integer)

$ n=6/3

$ echo $n

2

$ z=5

$ z=`expr $z+1` # 加號(+)兩邊要有空格

$ echo $z

5+1$ z=`expr $z + 1`

$ echo $z

6

$ let z=5

$ echo $z

5$ let z=$z+1

$ echo $z

6$ let z=$z + 1 # 與expr相反, 在加號(+)兩邊加空格會導致let報錯!

-bash: let: +: syntax error: operand expected (error token is "+")

$let z=z+1 # 在讀取變數值的時候,可以省略美元符號($)

$echo $z

7

$ ((e=5))

$ echo $e

5$ (( e = e + 3 ))

$ echo $e

8$ (( e=e+4 )) # 加號(+)兩邊的空格可加可不加

$ echo $e

12

支援的算術運算有:

符號含義

+ –加減

++ —

自增 自減

* / %

乘 除 取模**冪

除了支援算術運算外,還支援邏輯運算:

if (( x > y )); then

echo "x > y"

fi

支援的邏輯運算有:

符號含義

<= >= < >

小於等於 大於等於 小於 大於

== !=

相等 不等!否定

&&與||或

bc支援浮點運算,這在let(())中是不支援的。

$let r=3.5

-bash: let: r=3.5: syntax error in expression (error token is ".5")

$(( r = 3.5 ))

-bash: ((: r = 3.5 : syntax error in expression (error token is ".5 ")

bc的用法如下:

$ bc

bc 1.06

this is free software with absolutely no warranty.

for details type `warranty'.

3 + 2

5obase=2

121100

注意,使用ctrl + d(eof)可以退出bc

$r=3.5

$s=`echo "$r + 2.2" | bc`

$echo $s

5.7$ z=`echo "$z + 1" | bc`

$ echo $z

8$ z=`echo "$z+1" | bc` # 加號(+)兩邊的空格可加可不加

$ echo $z

9

有一下3種方式比較數字型別變數的大小。

符號含義

舉例-eq

相等[ 『1』 -eq 1 ]

-gt大於

[ 2 -gt 1 ]

-ge大於等於

[ 2 -ge 1 ]

-lt小於

[ 2 -gt 3 ]

-le小於等於

[ 2 -le 『3』]

-ne不等於

[ $var1 -ne $var2 ]

以下2個表示式是等價的。

if (( x < y )); then

statements

fiif [ $x -lt $y ]; then

statements

fi

bc可以用於比較浮點數的大小:當比較結果為真(true)時,返回1;否則返回0。舉個例子:

if [ $( echo "$t < 3.4" | bc ) -eq 1 ]; then

statements

fi

原文: math in shell scripts

Shell中的算術運算

當使用let時,變數名之前不能再新增 用法 var1 2 var2 3 let result var1 var2 echo result 除此之外,我們還可以使用 let 來進行自加自減操作 let var 使用let進行自加 let var 使用let進行自減 簡寫let no 6 let no ...

shell指令碼中的算術運算

本文將介紹6種shell指令碼中算術運算的方法,各有優缺點,當然了,最常用的就那兩種,我會特別指出。6種算術運算方法是 let operation expr operation operation operation 用awk 做算術運算 echo operation bc let no1 let ...

Linux之Shell的算術運算

在bash的算術運算中有以下幾種方法 名稱 語法 範例 算術擴充套件 算術式 r 1 2 3 使用外部程式expr expr 算術式 r expr 1 2 3 使用 算術式 r 1 2 使用內建命令 declare i 變數 算術式 declare i r 1 2 3 使用內建命令let let 算...