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的值
 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
 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
 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
 
在腳本中使用bc
var=`echo 「options;  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
 
退出腳本:
命令$? 查看上個執行的命令的退出狀態碼,退出狀態碼是一個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 退出狀態碼越界
 
 
exit