Linux 命令 & shell 脚本之04(bash shel

2020-09-27  本文已影响0人  轻飘飘D

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
上一篇下一篇

猜你喜欢

热点阅读