1.expr 命令操作符
表11-1 expr命令操作符
操 作 符 描 述
ARG1 | ARG2 如果ARG1既不是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的值
2.expr 命令案例
[oracle@DB02 myshell]$ expr 1 + 5
6
#许多expr命令操作符在shell中另有含义(比如星号)。出现在在expr命令中时,会得到一些诡异的结果。
[oracle@DB02 myshell]$ expr 5 * 2
expr: syntax error
#用shell的转义字符(反斜线)将其标出来
[oracle@DB02 myshell]$ expr 5 \* 2
10
3.在shell脚本中使用expr命令
[oracle@DB02 myshell]$ cat test_expr.sh
#!/bin/bash
# An example of using the expr command
var1=10
var2=20
var3=$(expr $var2 / $var1)
echo The result is $var3
[oracle@DB02 myshell]$ chmod u+x test_expr.sh
[oracle@DB02 myshell]$ ./test_expr.sh
The result is 2
4.bash shell有一个针对处理数学运算符的改进 用美元符和方括号($[ operation ])将数学表达式围起来
#注意在使用方括号来计算公式时,不用担心shell会误解乘号或其他符号, 無需轉義
[oracle@DB02 myshell]$ var1=$[1 + 5]
[oracle@DB02 myshell]$ echo $var1
6
[oracle@DB02 myshell]$ var2=$[$var1 * 2]
[oracle@DB02 myshell]$ echo $var2
12
[oracle@DB02 myshell]$ cat test_expr2.sh
#!/bin/bash
var1=100
var2=50
var3=45
var4=$[$var1 * ($var2 - $var3)]
echo The final result is $var4
[oracle@DB02 myshell]$ chmod u+x test_expr2.sh
[oracle@DB02 myshell]$ ./test_expr2.sh
The final result is 500
网友评论