shell 數字運算

2021-09-28 17:37:17 字數 1813 閱讀 7650

在 linux 的 shell 指令碼裡,變數預設都是字串的。以下面的指令碼為例:

#!/bin/bash

no1=4

no2=5

如果你直接使用「+」符號

result=$no1 + $no2

echo $result

得到的結果不是 9,而是 "45" 字串。這就是 shell 指令碼中變數預設為字串導致的結果。

那麼如何使得這兩個變數以 int 的值相加呢,有以下幾種方法:

(1)使用 let 關鍵字

let no1++

(2) 使用 操作符

result=$[ no1 + no2 ] 或者 result=$[ $no1 + 5 ]

(3) 使用 ( ( ) ) 

result=$(( no1 + 5 ))

以上的這些操作都是針對 int 型而已,要想對 double 型進行運算,就得使用 bc 關鍵字。比如

echo "4 * 0.56" | bc

2.24

no=54

result= `echo "$no * 5" | bc`

echo $result

81.0

echo "scale=2;3/8" | bc

0.37

#!/bin/bash

no=100

echo

"obase=2;$no" | bc

1100100

no=1100100

echo

"obase=10;ibase=2;$no" | bc

100

echo "sqrt(100)" | bc

echo "10 ^ 10" | bc

在 linux 的 shell 指令碼裡,變數預設都是字串的。以下面的指令碼為例:

#!/bin/bash

no1=4

no2=5

如果你直接使用「+」符號

result=$no1 + $no2

echo $result

得到的結果不是 9,而是 "45" 字串。這就是 shell 指令碼中變數預設為字串導致的結果。

那麼如何使得這兩個變數以 int 的值相加呢,有以下幾種方法:

(1)使用 let 關鍵字

let no1++

(2) 使用 操作符

result=$[ no1 + no2 ] 或者 result=$[ $no1 + 5 ]

(3) 使用 ( ( ) ) 

result=$(( no1 + 5 ))

以上的這些操作都是針對 int 型而已,要想對 double 型進行運算,就得使用 bc 關鍵字。比如

echo "4 * 0.56" | bc

2.24

no=54

result= `echo "$no * 5" | bc`

echo $result

81.0

echo "scale=2;3/8" | bc

0.37

#!/bin/bash

no=100

echo

"obase=2;$no" | bc

1100100

no=1100100

echo

"obase=10;ibase=2;$no" | bc

100

echo "sqrt(100)" | bc

echo "10 ^ 10" | bc

shell 數字運算

在 linux 的 shell 指令碼裡,變數預設都是字串的。以下面的指令碼為例 bin bash no1 4 no2 5如果你直接使用 符號 result no1 no2 echo result得到的結果不是 9,而是 45 字串。這就是 shell 指令碼中變數預設為字串導致的結果。那麼如何使得...

Shell數字及日期運算

兩邊沒有空格的 是賦值操作符,例如 number 6 加上空格的 是等量關係測試,例如 if 1 2 then ehco 1等於2 else echo 1不等於2 fi n1 2 n2 3 let rs n1 n2 echo rs 自加操作 let n1 echo n1 自減操作 let n1 le...

shell算數運算

i j k 等價於 i expr j k 等價於 i echo j echo k bc l i j k 等價於 i expr j k i j k 等價於 i expr j k i j k 等價於 i expr j k i j k 等價於 i expr j k let expressions 執行乙個...