Linux自动化运维:Shell与Ansible(微课版)
上QQ阅读APP看书,第一时间看更新

1.2.7 算术运算

Shell中常用的算术运算方法有使用let命令、使用expr命令、使用bc命令、使用运算语法$[算术表达式]、使用运算语法$((算术表达式))等几种。

在Shell中可以使用各种运算符来执行运算,这些运算符主要有以下几类。

(1)算术运算符:包括+(加)、-(减)、*(乘)、/(除)和%(取余)等。

(2)关系运算符:用于比较两个数的大小,包括-eq(等于)、-ne(不等于)、-gt(大于)、-lt(小于)、-ge(大于或等于)和-le(小于或等于)等。

V1-7 算术运算

(3)逻辑运算符:用于比较两个布尔值的真假,包括&&(逻辑与)、||(逻辑或)和!(逻辑非)等。

(4)字符串运算符:用于比较两个字符串的大小,包括=(等于)、!=(不等于)和-z(是否为空字符串)等。

(5)文件测试运算符:用于检查和判断文件的属性及状态,包括-e(文件是否存在)、-r(文件是否可读)、-w(文件是否可写)和-x(文件是否可执行)等。

1. 算术运算符

默认情况下,如果不特别指明,则Shell不直接进行算术运算,而是把算术运算符解释为字符串连接符,相当于两个字符串拼接在一起,形成一个新的字符串。

Shell支持的常见的算术运算符如表1-10所示。

表1-10 Shell支持的常见的算术运算符

算术运算符的优先级遵循算术运算的优先级,即先乘除,再加减。如果需要改变优先级,则可以使用圆括号进行标识。

在算术运算中,圆括号用于指定运算的顺序,并在进行算术运算时被视为操作符。例如:


echo $(( (2 + 3) * 4 ))
20

2. 其他运算方法

bc是一个Shell命令,用于执行高精度算术运算。它是一种解释型命令,可以直接在命令行中输入算术表达式并计算结果。

bc支持很多算术运算,包括加、减、乘、除、取余、幂运算、位运算等。它还支持函数,包括数学函数(如sine、cosine和sqrt)、字符串函数(如length和index)等。

下面是一些使用bc命令的示例。


# 计算 $2^8$ 的值
$ echo "2^8" | bc
256
# 计算 $1 + 2 * 3 - 4 / 5$ 的值
echo "1 + 2 * 3 - 5 / 5" | bc
6

let是一个Shell命令,用于执行算术运算。它允许在命令行中直接输入表达式,并将结果存储在变量中。

下面是一些使用let命令的示例。


# 计算2 + 3的值并将结果存储在变量x中
let x=2+3
echo $x
5
# 计算4 - 1的值并将结果存储在变量y中
let y=4-1
echo $y
3

expr是一个Shell命令,用于执行算术运算、文本比较和模式匹配。它是一个简单的解释型命令,可以在命令行中输入表达式并计算输出结果。

下面是一些使用expr命令的示例。


# 计算2 + 3的值
expr 2 + 3
5
# 计算4 - 1的值
expr 4 - 1
3