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