Shell之基本运算符

注:此博客使用的是Bash shell

  1. 算数运算符
运算符说明举例
+加法expr $a + $b
-减法expr $a - $b
*乘法expr $a \* $b
/除法expr $b / $a
%取余expr $b % $a
=赋值a=$b 将把变量 b 的值赋给 a
==等于[ $a == $b ] 返回 false
!=不等于[ $a != $b ] 返回 true

代码举例:

#!/bin/bash  
value=`expr ${1} + ${2}`
echo ${value}
value=`expr ${1} \* ${2}`
echo ${value}
value=`expr ${1} - ${2}`
echo ${value}
value=`expr ${1} / ${2}`
echo ${value}
value=`expr ${1} % ${2}`
echo ${value}
if [ ${1} == ${2} ]
then
    echo "相等"
fi

if [ ${1} != ${2} ]
then
    echo "不相同"
fi

输出:

cjs@cjs:~$ ./a.sh 40 20
60
800
20
2
0
不相同

注意:
22
还有一种方法:代码中的 [ ] 执行基本的算数运算
代码举例:

#!/bin//bash
a=99
b=88
echo "$[a*b]"
#输出:187
  1. 关系运算符

关系运算符只支持数字,不支持字符串,除非字符串的值是数字

运算符说明举例
-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 ]

代码举例:

#!/bin/bash  
if [ ${1} -eq ${2} ]
then
        echo "相等"
fi

if [ ${1} -ne ${2} ]
then
        echo "不相等"
fi

if [ ${3} -gt ${4} ]
then
        echo "大于"
fi

if [ ${3} -lt ${4} ]
then
        echo "小于"
fi

if [ ${5} -ge ${6} ]
then
        echo "大于等于"
fi

if [ ${5} -le ${6} ]
then
        echo "小于等于"
fi

输出:

cjs@cjs:~$ ./a.sh 10 20 30 25 99 199
不相等
大于
小于等于

注意:
323
记忆:
① -eq :相等,equal英文,取前两个字母;
② -ne :不相等,not-equal,速记;
③ -gt : 大于,greater than,gt速记;
④ -lt : 小于,less than,lt速记;
⑤ -ge :大于等于,gt+eq=ge,速记;
⑥ -le :小于等于,lt+eq=le,速记;

  1. 布尔运算符
运算符说明举例
!非运算,表达式为 true 则返回 false,否则返回 true[ ! false ] 返回 true
-o或运算,有一个表达式为 true 则返回 true
-a与运算,两个表达式都为 true 才返回 true

代码举例:

#!/bin/bash 
if [ !${1} ]
then
        echo "非0的结果为:ture"
fi

if [ ${2} -ge 100 -o ${3} -le 100 ]
then
        echo "参数2大于等于100或参数3小于等于100"
else
        echo "参数2大于等于100或参数3小于等于100:不成立"
fi

if [ ${2} -gt 100 -a ${3} -lt 100 ]
then
        echo "参数2大于等于100且参数3小于等于100"
else
        echo "参数2大于等于100且参数3小于等于100:不成立" 
fi

输出:

cjs@cjs:~$ ./a.sh 0 199 990的结果为:ture
参数2大于等于100或参数3小于等于100
参数2大于等于100且参数3小于等于100

记忆:
①非:!,同C语言
②或:or,故为 -o
③与:and,故为 -a

  1. 逻辑运算符
运算符说明
&&逻辑的 AND
||逻辑的 OR

代码类似布尔运算符。
注:& 不管前面的条件是否正确,后面都执行。
&& 前面条件正确时,才执行后面,不正确时,就不执行,就效率而言,这个更好。

  1. 字符串运算符
运算符说明
= 【注意不是==】检测两个字符串是否相等,相等返回 true
!=检测两个字符串是否相等,不相等返回 true
-z检测字符串长度是否为0,为0返回 true
-n检测字符串长度是否不为 0,不为 0 返回 true
$检测字符串是否为空,不为空返回 true

代码举例:

#!/bin/bash
if [ ${1} = ${2} ]           #判断两个字符串相同,用=,而不是==,但是不等仍为!=
then
        echo "字符1等于字符2"
else
        echo "字符1不等于字符2"
fi

if [ -z ${1} ]
then
        echo "字符串1长度为0" 
else
        echo "字符串1长度不为0"
fi

if [ -n ${1} ]
then
        echo "字符串1长度不为0" 
else
        echo "字符串1长度为0"
fi

if [ ${1} ]    #注意下,这个直接传入字符串即可
then
        echo "字符串1不为空" 
else
        echo "字符串1为空"
fi

输出:

cjs@cjs:~$ ./a.sh abc qwe
字符1不等于字符2
字符串1长度不为0
字符串1长度不为0
字符串1不为空
  1. 文件测试运算符
操作符说明
-b检测文件是否是块设备文件
-c检测文件是否是字符设备文件
操作符说明
-d检测文件是否是目录
-f检测文件是否是普通文件(既不是目录,也不是设备文件)
操作符说明
-r检测文件是否可读
-w检测文件是否可写
-x检测文件是否可执行
-s检测文件是否为空(文件大小是否大于0)
-e检测文件(包括目录)是否存在
操作符说明
-g检测文件是否设置了 SGID 位
-u检测文件是否设置了 SUID 位
-k检测文件是否设置了粘着位(Sticky Bit)
-p检测文件是否是有名管道
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

秋山刀名鱼丶

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值