目录
在shell中,和其他编程语言一样也有多种运算符,常用的运算符有:算数运算符、关系运算符、逻辑运算符、字符串运算符、文件测试运算符等。
算数运算符就是我们最常见的,常用的主要有+(加)、-(减)、*(乘)、/(除)、%(取余)、=(赋值)、==(等于)、!=(不等于)。
shell是不支持简单的数学运算的,这时候我们就可以使用expr命令来实现shell中的简单运算,expr 是一款表达式计算工具,使用它能完成表达式的求值操作。expr的命令使用方法是:比如1+2要写成`expr 1 + 2`,expr和计算公式需要写在 ` ` 中(方括号,esc下面的那个按钮)并且数值和运算符之间要有空格`expr 1+2`是不对的。
- echo "1+2" #先试下正常的运算方式能否得到结果
- #打印结果 1+2
- echo `expr 1+2` #数值和运算符中间没有空格时
- #打印结果 1+2
- echo `expr 1 + 2` #加法
- #打印结果 3
- echo `expr 2 - 1` #减法
- #打印结果 1
- echo `expr 2 \* 3` #乘法必须要使用反斜杠才能实现
- #打印结果 6
- echo `expr 2 * 3` #乘法没有反斜杠时
- #打印结果 expr: 语法错误
-
- echo `expr 6 / 2` #除法
- #打印结果 3
- echo `expr 6 % 4` #取余
- #打印结果 2
-
- cat dengyu.sh #查看dengyu.sh这个脚本
-
- #! /bin/bash
-
- if [ 10 == 10 ]
- then
- echo "等于判断"
- fi
-
- if [ 10 != 20 ]
- then
- echo "不等于判断"
- fi
-
- ./dengyu.sh #运行该脚本
- 等于判断
- 不等于判断
关系运算符的应用范围只支持数字,不支持字符串,常见的关系运算符:-eq(equal;检测两个数是否相等,相等返回true)、-ne(not equal;检测两个数是否相等,不相等返回true)、-gt(greater than;检测左边的数是否大于右边的,如果是,则返回 true)、-lt(less than;检测左边的数是否小于右边的,如果是,则返回 true。)、-ge(greater than or equal;检测左边的数是否大于等于右边的,如果是,则返回 true。)、-le(less than or equal;检测左边的数是否小于等于右边的,如果是,则返回 true。)
shell代码:
- #! /bin/bash
- a=10 #定义变量a=10
- b=20 #定义变量b=20
-
- #-eq(equal;检测两个数是否相等,相等返回true)
-
- if [ $a -eq $b ] #判断如果a和b是否相等
- then
- echo "$a -eq $b : a 等于 b" #如果a和b相等则输出 a 等于 b
- else
- echo "$a -eq $b: a 不等于 b" #如果a和b不相等则输出 a 不等于 b
- fi
-
- #因为a不等于b,所以走到else分支,打印结果 :10 -eq 20: a 不等于 b
-
- -ne(not equal;检测两个数是否相等,不相等返回true)
-
- if [ $a -ne $b ] #判断如果a和b是否不相等
- then
- echo "$a -ne $b: a 不等于 b" #如果不相等则打印a 不等于 b
- else
- echo "$a -ne $b : a 等于 b" #如果相等则打印a 等于 b
- fi
-
- #因为a不等于b,所以走到then下面,打印结果:10 -ne 20: a 不等于 b
-
- #-gt(greater than;检测左边的数是否大于右边的,如果是,则返回 true)
-
- if [ $a -gt $b ] #判断a是否大于b
- then
- echo "$a -gt $b: a 大于 b" #如果a大于b则打印a 大于 b
- else
- echo "$a -gt $b: a 不大于 b" #如果a不大于b则打印a 不大于 b
- fi
-
- #因为a不大于b,所以走到else分支下,打印结果:10 -gt 20: a 不大于 b
-
-
- -lt(less than;检测左边的数是否小于右边的,如果是,则返回 true。)
-
- if [ $a -lt $b ] #判断a是否小于b
- then
- echo "$a -lt $b: a 小于 b" #如果a小于b则打印a 小于 b
- else
- echo "$a -lt $b: a 不小于 b" #如果a不小于b则打印 a 不小于 b
- fi
-
- #因为a小于b,所以走到then分支下,打印结果:10 -lt 20: a 小于 b
-
- -ge(greater than or equal;检测左边的数是否大于等于右边的,如果是,则返回 true。)
-
- if [ $a -ge $b ] #判断a是否大于或等于b
- then
- echo "$a -ge $b: a 大于或等于 b" #如果a大于或等于b 则打印a 大于或等于 b
- else
- echo "$a -ge $b: a 小于 b" #如果a小于b 则打印a 小于 b
- fi
-
- #因为a小于b,所以走到else分支下,打印结果:10 -ge 20: a 小于 b
-
- -le(less than or equal;检测左边的数是否小于等于右边的,如果是,则返回 true。)
-
- if [ $a -le $b ] #判断a是否小于或者等于b
- then
- echo "$a -le $b: a 小于或等于 b" #如果a小于或等于b则打印a 小于或者等于 b
- else
- echo "$a -le $b: a 大于 b" #如果a大于b 则打印 a 大于 b
- fi
-
- #因为a小于b,所以走到then分支下,打印结果:10 -le 20: a 小于或等于 b
shell截图:
运行结果截图:
下图为公众号二维码,内容会同步发出,大家可以关注一起学习