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