Linux 執行數學運算

expr命令python

root@pts/0 # expr 1 + 5 
6

expr命令操做符shell

操做符 描述
ARG1 | ARG2 若是沒有參數是null或零值,返回ARG1,不然返回ARG2
ARG1 & ARG2 若是沒有參數是null或零值,返回ARG1,不然返回0
ARG1 < ARG2 若是ARG1小於ARG2,返回1,不然返回0
ARG1 <= ARG2 若是ARG1小於或等於ARG2,返回1,不然返回0
ARG1 = ARG2 若是ARG1等於ARG2,返回1,不然返回0
ARG1 != ARG2 若是ARG1不等於ARG2,返回1,不然返回0
ARG1 >= ARG2 若是ARG1大於或等於ARG2,返回1,不然返回0
ARG1 > ARG2 若是ARG1大於ARG2,返回1,不然返回0
ARG1 + ARG2 返回ARG1和ARG2的算術運算和
ARG1 - ARG2 返回ARG1和ARG2的算術運算差
ARG1 * ARG2 返回ARG1和ARG2的算術乘積
ARG1 / ARG2 返回ARG1被ARG2除的算術商
ARG1 % ARG2 回ARG1被ARG2除的算術餘數
STRING:REGEXP 若是REGEXP匹配到了STRING中的某個模式,返回該模式匹配
match STRING REGEXP 若是REGEXP匹配到了STRING中的某個模式,返回該模式匹配
substr STRING POS LENGTH 返回起始位置爲POS(從1開始計數)、長度爲LENGTH個字符的子字符串
index STRING CHARS 返回在STRING中找到CHARS字符串的位置,不然返回0
length STRING 返回字符串STRING的數值長度
+ TOKEN 將TOKEN解釋成字符串,即便是個關鍵字
(EXPRESSION) 返回EXPRESSION的值

&#160;express

使用方括號[ ]bash

root@pts/0 # cat test    
#!/bin/bash
var1=30
var2=5
var3=$[$var1 / $var2]
var4=$[$var3 * 2]

echo The result is $var4
Test_2 [~] 2015-10-09 00:49:44
root@pts/0 # ./test   
The result is 12

&#160;ui

注意:bash shell數學運算符只支持整數運算,以下:spa

root@pts/0 # cat test   
#!/bin/bash
var1=100
var2=45
var3=$[$var1 / $var2]

echo The result is $var3
Test_2 [~] 2015-10-09 00:51:55
root@pts/0 # ./test   
The result is 2

&#160;code

浮點解決方案(bc)ci

root@pts/0 # bc
bc 1.06.95
Copyright 1991-1994, 1997, 1998, 2000, 2004, 2006 Free Software Foundation, Inc.
This is free software with ABSOLUTELY NO WARRANTY.
For details type `warranty'. 
12 * 5.4
64.8
3.156 * (3 + 5)
25.248
quit
浮點運算是由一個內建的稱爲scale的變量控制的,你必須將這個值設置爲結果裏你想要的小數後的位數,不然你不會獲得想要的結果:
root@pts/0 # bc -q 
3.44 / 5
0
scale=4
3.44 / 5
.6880
quit

scale變量默認值是0,將其設置成4後,bash計算器顯示的答案有四位小數,-q參數會將bash計算器輸出的很長的歡迎條屏蔽掉字符串

bash計算器支持變量數學

root@pts/0 # bc -q 
var1=10
var1 * 4
40
var2 = var1 / 5print var2
2
quit

&#160;

在腳本中使用bc

var=`echo 「options;&#160; expression」 | bc`

options設置變量,能夠用分號隔開。

root@pts/0 # cat test 
#!/bin/bash
var1=`echo "scale=4;3.44 / 5"|bc`
echo $var1
Test_2 [~] 2015-10-09 22:33:57
root@pts/0 # ./test 
.6880
root@pts/0 # cat test   
#!/bin/bash
var1=100
var2=45
var3=`echo "scale=4;$var1 / $var2"|bc`
echo $var3
Test_2 [~] 2015-10-09 22:36:21
root@pts/0 # ./test   
2.2222
root@pts/0 # cat test     
#!/bin/bash
var1=10
var2=5
var3=`echo "scale=4;$var1 / $var2"|bc`

var4=`bc << EOF
scale=4
a1 = ($var1 * $var2)
b1 = ($var3 * $var2)
a1 / b1
EOF
`


echo $var4

Test_2 [~] 2015-10-09 22:40:35
root@pts/0 # ./test   
5.0000

&#160;

退出腳本:

命令$? 查看上個執行的命令的退出狀態碼,退出狀態碼是一個0~255之間的整數值。

root@pts/0 # date 
Fri Oct  9 22:44:01 GMT 2015

Test_2 [~] 2015-10-09 22:44:01
root@pts/0 # echo $?
0
root@pts/0 # asdf
-bash: asdf: command not found

Test_2 [~] 2015-10-09 22:44:35
root@pts/0 # echo $?
127

如上,成功退出的狀態碼爲0,無效命令返回127

Linux退出狀態碼

狀態碼 描述
0 命令成功結束
1 通用未知錯誤
2 誤用shell命令
126 命令不可執行
127 沒找到命令
128 無效退出參數
128+x Linux信號x的嚴重錯誤
130 命令經過Ctrl+C終止
255 退出狀態碼越界

&#160;

&#160;

exit

相關文章
相關標籤/搜索