简单shell命令(二)

146 阅读2分钟

本文已参与新人创作礼活动,一起开启掘金创作指路。

基本运算符

Shell 和其他编程语言一样,支持多种运算符,包括:

算数运算符 关系运算符 布尔运算符 字符串运算符 文件测试运算符 原生bash不支持简单的数学运算,但是可以通过其他命令来实现,例如 awk 和 expr,expr 最常用。 expr 是一款表达式计算工具,使用它能完成表达式的求值操作。

-eq 检测两个数是否相等,相等返回 true。 [ aeqa -eq b ] 返回 false。 -ne 检测两个数是否不相等,不相等返回 true。 [ anea -ne b ] 返回 true。 -gt 检测左边的数是否大于右边的,如果是,则返回 true。 [ agta -gt b ] 返回 false。 -lt 检测左边的数是否小于右边的,如果是,则返回 true。 [ alta -lt b ] 返回 true。 -ge 检测左边的数是否大于等于右边的,如果是,则返回 true。 [ agea -ge b ] 返回 false。 -le 检测左边的数是否小于等于右边的,如果是,则返回 true。 [ alea -le b ] 返回 true。

! 非运算,表达式为 true 则返回 false,否则返回 true。 [ ! false ] 返回 true。 -o 或运算,有一个表达式为 true 则返回 true。 [ alt20oa -lt 20 -o b -gt 100 ] 返回 true。 -a 与运算,两个表达式都为 true 才返回 true。 [ alt20aa -lt 20 -a b -gt 100 ] 返回 false。 例如,两个数相加(注意使用的是反引号 ` 而不是单引号 '):

#!/bin/bash
demo=`expr 1 + 3`
echo $demo
结果

在这里插入图片描述 两点注意:

表达式和运算符之间要有空格,例如 2+2 是不对的,必须写成 2 + 2,这与我们熟悉的大多数编程语言不一样。 完整的表达式要被 包含,注意这个字符不是常用的单引号,在 Esc 键下边。

运算案例

#!/bin/bash
a=1
b=2

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

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

val=`expr $a \* $b`
echo "a * b : $val"

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

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

if [ $a == $b ]
then
echo '$a和$b的值相等'
fi
if [ $a != $b ]
then
echo '$a和$b的值不相等'
fi

结果

a + b : 3
a - b : -1
a * b : 2
b / a : 2
b % a : 0
$a和$b的值不相等

注:if语句中[ a==a == b ] 前后需要有空格