Shell 运算符
=============================摘自菜鸟教程=================================
Shell和其他编程语言一样,支持多种运算符包括:
A、算术运算符;
B、关系运算符;
C、布尔运算符;
D、字符串运算符;
E、文件测试运算符;
1、算术运算符
常用算术运算符
运算符号 |
说明 |
例子 |
+ |
加法 |
`expr $a + $b` |
- |
减法 |
`expr $a - $b` |
* |
乘法 |
`expr $a * $b` |
/ |
除法 |
`expr $a / $b` |
% |
取余 |
`expr $a % $b` |
= |
赋值 |
a=$b,将变量b的值赋值给a |
== |
相等。用于比较两个相等则返回true |
[ $a == $b ] |
!= |
不相等,用于比较两个数字,相等则返回true |
[ $a != $b ] |
示例:
#!/bin/bash ###本脚本主要用于练习算术运算符; ###写于20190903 ###1、两个变量求和 if [ ! $1 - ! $2 ] then echo "*******本脚本主要用于两个变量的算术运算;" echo "*******本脚本运行格式为:sh suanshu_learn.sh 变量1 变量2" break else res=`expr $1 + $2` echo "变量a加b等于:$res" ###2、两个变量求差; res=`expr $1 - $2` echo "变量a减b等于:$res" ###3、两个变量相乘; res=`expr $1 * $2` echo "变量a乘以变量b等于:$res" ###4、两个变量相除; res=`expr $1 / $2` echo "变量a除以变量b等于:$res" ###5、两个变量取余; res=`expr $1 % %b` echo "变量a除以b取余等于:$res" ###6、判断两个变量相等; if [ $a == $b ] then echo "变量a等于变量b" fi ###7、判断两个变量不相等; if [ $a != $b ] then echo "变量a不等于变量b" fi fi
2、关系运算符
关系运算符只支持数字,不支持字符串,除非字符串为数字。
常用的关系运算符
运算符 |
说明 |
例子 |
-eq |
检测两个数是否相等,相等返回true |
[ $a -eq $b ] |
-ne |
检测两个数是否不相等,不相等返回true |
[ $a -ne $b ] |
-gt |
检测左边数是否大于右边的,如果是,返回true |
[ $a -gt $b ] |
-lt |
检测左边数是否小于右边的,如果是,返回true |
[ $a -lt $b ] |
-ge |
检测左边数是否大于等于右边的,如果是,返回true |
[ $a -ge $b ] |
-le |
检测左边数是否小于等于右边的,如果是,返回true |
[ $a -le $b ] |
示例:relation_test.sh
#!/bin/bash ###本脚本主要用于关系运算符 ###本脚本写于20190904 ###1、检测两个数字是否相等 if [ ! $1 ] then echo "第一个参数为空" echo "****************************************************************" echo "****************************************************************" echo "**************执行用例的格式为:sh $0 变量1 变量2***************" echo "****************************************************************" echo "****************************************************************" break else if [ ! $2 ] then echo "第二个参数为空" echo "****************************************************************" echo "****************************************************************" echo "**************执行用例的格式为:sh $0 变量1 变量2***************" echo "****************************************************************" echo "****************************************************************" break else if [ $3 ] then echo "第三个参数为多余参数" break else if [ $1 -eq $2 ] then echo "执行的是第一个判断语句" echo "参数1等于参数2" fi ###2、检测两个数字是否不相等 if [ $1 -ne $2 ] then echo "执行的是第二个判断语句" echo "参数1不等于参数2" fi ###3、检测左边的数是否大于右边的; if [ $1 -gt $2 ] then echo "执行的是第三个判断语句" echo "参数1大于参数2" fi ###4、检测左边的数是否小于右边; if [ $1 -lt $2 ] then echo "执行的是第四个判断语句" echo "参数1小于参数2" fi ###5、检测左边的数是否大于等于右边的; if [ $1 -ge $2 ] then echo "执行的是第五个判断语句" echo "参数1大于等于参数2" fi ###5、检测左边的数小于等于右边的; if [ $1 -le $2 ] then echo "执行的是第六个判断语句" echo "参数1小于等于参数2" fi fi fi fi