sell 脚本-05运算符

sell 脚本-运算符

算术运算符

原生bash不支持简单的数学运算,但是可以通过其他命令来实现,例如 awk 和 expr,expr 最常用。

表达式和运算符之间要有空格,例如 2+2 是不对的,必须写成 2 + 2
完整的表达式要被 `` 包含,注意这个字符不是常用的单引号。
*

加法

echo "加法: `expr 1 + 2 + 3`"
# 或给变量赋值
sum=`expr 1 + 2 + 3`
echo "sum 值为: $sum"

减法

echo "减法: `expr 1 - 2 - 3`"

乘法

echo "乘法: `expr 1 \* 2 \* 3`"

除法

echo "除法: `expr 6 / 3 / 2`"

取余

echo "取余: `expr 5 % 3`"

等于或不等于

比较两个数字是否相等或不相等,返回布尔值

num1=1
num2=2
if [ $num1 == $num2 ]
then
   echo "num1 等于 num2"
fi
if [ $num1 != $num2 ]
then
   echo "num1 不等于 num2"
fi
num3=20
num4=20
if [ $num3 == $num4 ]
then
   echo "num3 等于 num4"
fi
if [ $num3 != $num4 ]
then
   echo "num3 不等于 num4"
fi

注意: [] 符号和判断条件中间要有空格

执行结果:

num1 不等于 num2
num3 等于 num4

关系运算符

关系运算符只支持数字,不支持字符串,除非字符串的值是数字。
关系运算符有:-eq, -ne, -gt, -lt, -ge, -le

-eq: 检测两个数是否相等

num5=5
num6=6
if [ $num5 -eq $num6 ]
then
    echo "$num5 -eq $num6 结果: num5 等于 num6"
else
    echo "$num5 -eq $num6 结果: num5 不等于 num6"
fi

-ne: 检测两个数是否不相等

if [ $num5 -ne $num6 ]
then
    echo "$num5 -ne $num6 结果: num5 不等于 num6"
else
    echo "$num5 -ne $num6 结果: num5 等于 num6"
fi

-gt: 检测左边的数是否大于右边的

if [ $num5 -gt $num6 ]
then
    echo "$num5 -gt $num6 结果: num5 大于 num6"
else
    echo "$num5 -gt $num6 结果: num5 不大于 num6"
fi

-lt: 检测左边的数是否小于右边的

if [ $num5 -lt $num6 ]
then
    echo "$num5 -lt $num6 结果: num5 小于 num6"
else
    echo "$num5 -lt $num6 结果: num5 不小于 num6"
fi

-ge: 检测左边的数是否大于等于右边的

if [ $num5 -ge $num6 ]
then
    echo "$num5 -ge $num6 结果: num5 大于等于 num6"
else
    echo "$num5 -ge $num6 结果: num5 小于 num6"
fi

-le: 检测左边的数是否小于等于右边的

if [ $num5 -le $num6 ]
then
    echo "$num5 -le $num6 结果: num5 小于等于 num6"
else
    echo "$num5 -le $num6 结果: num5 大于 num6"
fi

布尔运算符

布尔运算符包括非运算,或运算,与运算,对应的运算符为!, -o, -a

非运算

参考上面的 !=

或运算

多个表达式中,有一个表达式为 true,则返回 true

num7=7
num8=8
if [ $num7 == $num8 -o $num7 != $num8 ]
then
    echo "$num7 == $num8 -o $num7 != $num8 结果: true"
else
    echo "$num7 == $num8 -o $num7 != $num8 结果: false"
fi

运行结果:

7 == 8 -o 7 != 8 结果: true

与运算

多个表达式中,所有表达式为 true,则返回 true

if [ $num7 == $num8 -a $num7 != $num8 ]
then
    echo "$num7 == $num8 -a $num7 != $num8 结果: true"
else
    echo "$num7 == $num8 -a $num7 != $num8 结果: false"
fi

运行结果:

7 == 8 -a 7 != 8 结果: false

逻辑运算符

逻辑运算符有 AND &&OR ||

AND

两个条件都为 true 则返回 true, 类似上面的 -a

num9=9
num10=10

if [[ $num9 == 100 && $num10 != 100 ]]
then
   echo "返回 true"
else
   echo "返回 false"
fi

运行结果:

返回 false

OR

两个条件一个为 true 则返回 true, 类似上面的 -o

num9=9
num10=10

if [[ $num9 == 100 && $num10 != 100 ]]
then
   echo "返回 true"
else
   echo "返回 false"
fi

运行结果:

返回 true

字符串运算符

相等

使用 = 可以判断字符串是否相等,使用 != 判断是否不相等

str1="hello"
str2="word"

if [ $str1 = $str2 ]
then
    echo "$str1 等于 $str2"
else
    echo "$str1 不等于 $str2"
fi

if [ $str1 != $str2 ]
then
    echo "$str1 不等于 $str2"
else
    echo "$str1 等于 $str2"
fi

运行结果:

hello 不等于 world
hello 不等于 world

判断字符串长度是否为0

使用 -z 若字符串长度为0时,返回 true
使用 -n 若字符串长度不为0时,返回 true

empty_str=""

# -z
if [ -z $empty_str ]
then
    echo "字符串“${empty_str}”长度为0"
else
    echo "字符串“${empty_str}”长度不为0"
fi
if [ -z $str1 ]
then
    echo "字符串“${str1}”长度为0"
else
    echo "字符串“${str1}”长度不为0"
fi
# -n
if [ -n "$empty_str" ]
then
    echo "字符串“${empty_str}”长度不为0"
else
    echo "字符串“${empty_str}”长度为0"
fi
if [ -n "$str1" ]
then
    echo "字符串“${str1}”长度不为0"
else
    echo "字符串“${str1}”长度为0"
fi

运行结果:

字符串“”长度为0
字符串“hello”长度不为0
字符串“”长度为0
字符串“hello”长度不为0

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

eno_zeng

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

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

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

打赏作者

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

抵扣说明:

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

余额充值