shell指令碼中的數值運算

2021-07-14 10:57:36 字數 1437 閱讀 6885

shell中的變數沒有如c語言中字元型、整型、浮點型的區分,預設將變數賦值當做字元,怎樣才能讓shell將變數賦值當做數值型呢,答案是用

一,$ 和, 包含的數學算式可以被shell正確識別。

[root@localhost ~]# cat test.sh

例1。

#!/bin/bash

var1=100

var2=200

var3=$[

$var1+$var2

]echo

$var3

[root@localhost ~]# sh test.sh

300

二,shell中還提供了乙個數**算的命令 expr(evaluate expression),他可以進行加減乘除還有比較運算,不過很可惜的是不支援浮點型運算。

例2。 1.((i=j+k)) 等價於 i=expr $j + $k

2.((i=j−k)) 等價於 i=expr j

−j -

j−k3.((i=j∗k)) 等價於 i=expr katex parse error: expected 'eof', got '\*' at position 3: j \̲*̲k

4.((i=j/k)) 等價於 i=expr j

/j /

j/k缺陷就是expr命令中的運算子可能會有其他含義如*,必須要使用反斜槓進行轉義(如3)

注意:let expressions 執行乙個或多個表示式。表示式中的變數前不必有$.如果表示式中包含了空格或其他特殊字元,則必須引起來。

三, 用let指示數**算。可以先將運算的結果賦值給變數b,運算命令是b=let 1 + 2。然後用echo$b來輸出b的值。如果沒有let,則會輸出1+2。

下面是乙個shell程式例項,實現數學函式s=3(xy)+4x2+5y+6的運算。在程式中以位置變數的方式輸入x與y的值

(**:對兩個變數做冪運算。)

!/bin/bash

s=0 #定義乙個求和變數,初值為0。

t=expr$1**

$2#用expr改變運算順序,求x的y次方。

t=$[t*3]

#t乘以3。

s=$[s+t]

#結果相加。

t=[1**2]

#求x的平方。

t=$[t*4]

#結果乘以4。

s=$[s+t]

#結果相加。

t=expr$2*5

#求5y的值。

s=$[s+t]

#結果相加。

s=$[s+6]

#結果加上6。

echo

$s#輸出結果。

echo

$((a%b))

#取餘

Shell中的數值運算

問題 本案例要求熟悉linux shell環境的特點,主要練習以下操作 使用expr let等整數運算工具 定義變數x 1234,然後計算x與78的四則運算及求模結果 使用bc實現小數運算操作 以互動方式計算12.34與56.78的四則運算結果,另外再以非互動方式重複上述計算,最多顯示4位小數 步驟...

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 變...