宽容他人,放过自己。

Shell基本运算符

Posted on By anchoriteFili

# Shell基本运算符
# Shell和其他编程语言一样,支持多种运算符
# 原生bash不支持简单的数学运算,但是可以通过其他命令来实现,例如awk和expr,expr最常用。
# expr是一款表达式计算工具,使用它能完成表达式的求职操作。
# 例如,两个数相加(注意使用的是反引号`而不是单引号')
val=`expr 2 + 2`
echo "两个数的相加为:$val"
# 两点注意:
# 1. 表达式和运算符之间要有空格,例如2+2是不对的,必须写成2 + 2,这与我们熟悉的大多数编程语言不一样
# 2. 完整的表达式要被``包含,注意这个字符不是单引号,而是反引号

# 算数运算符
# 注意:条件表达式要放在方括号之间,并且要有空格,例如[$a==$b]是错误的,必须写成[ $a == %b ]。
a=10
b=20

var=`expr $a + $b`
echo "a + b : $var"

var=`expr $a - $b`
echo "a - b : $var"

var=`expr $a \* $b` # 乘号(*)前边必须加反斜杠(\)才能实现乘法运算
echo "a * b : $var"

var=`expr $b / $a`
echo "a / b : $var"

var=`expr $b % $a`
echo "b % a : $var"

if [ $a == $b ] # 条件表达式与中括号之间要有空格,不然报错
then
    echo "a 等于 b"
fi

if [ $a != $b ] # if...then...fi是条件语句,后续将会讲解
then
    echo "a 不等于 b"
fi


# 关系运算符
# 关系运算符只支持数字,不支持字符串,除非字符串的值是数字。
# -ep 检测两个数是否相等,相等返回true.
# -ne 检测两个数是否不相等,不相等返回true
# -gt 检测左边的数是否大于右边的,如果是,则返回true
# -lt 检测左边的数是否小于右边的,如果是,则返回true
# -ge 检测左边的数是否大等于右边的,如果是,则返回true
# -le 检测左边的数是否小于等于右边的,如果是,则返回true

a=10
b=20

if [ $a -eq $b ]
then
    echo "$a -eq $b : a 等于 b"
else
    echo "$a -eq $b : a 不等于 b"
fi

if [ $a -ne $b ]
then
    echo "$a -ne $b : a 不等于 b"
else
    echo "$a -ne $b : a 等于 b"
fi

if [ $a -gt $b ]
then
    echo "$a -gt $b : a 大于 b"
else
    echo "$a -gt $b : a 小于 b"
fi

if [ $a -lt $b ]
then
    echo "$a -lt $b : a 小于 b"
else
    echo "$a -lt $b : a 大于 b"
fi

if [ $a -ge $b ]
then
    echo "$a -ge $b : a 大于等于 b"
else
    echo "$a -ge $b : a 小于 b"
fi

if [ $a -le $b ]
then
    echo "$a -le $b : a 小于等于 b"
else
    echo "$a -le $b : a 大于 b"
fi