欢迎,来自IP地址为:35.171.164.77 的朋友


Bash 脚本还可以做很多的事,比如通过变量实现简单的数学运算。

数学运算的语法格式为:

$((arithmetic_operation))

例如我们想对两个变量求和,则可以通过如下方式实现:

sum=$(($num1 + $num2))

脚本中并未强制要求是否使用空格间隔变量及数学运算符,形如”$(($num1 + $num2))”、”$(( $num1+$num2))”以及”$(($num1+$num2))”都不影响最终的运算结果。

Bash 支持的数学运算符

以下是 Bash 支持的数学运算符:

运算符 描述
+ 加(求和)
减(求差)
* 乘(求积)
/ 整数除(求整数商)
% 求余
** 指数运算(求a的b次方)

PS:Bash 不支持小数,如果必须使用小数,则可以使用”bc”命令来处理它们。

现在,我们编写一个脚本”arithmetic.sh”,接收用户输入的数据,并求两个数的和与差,内容如下:

#!/bin/bash

read -p "Enter first number: " num1
read -p "Enter second number: " num2

sum=$(($num1+$num2))
sub=$(($num1-$num2))
echo "The summation of $num1 and $num2 is $sum"
echo "The substraction of $num2 from $num1 is $sub"

我相信大家对于使用 read 命令接收用户输入已经比较熟悉了,执行脚本后示例显示如下:

至于其它运算,这里不再做演示。

现在重点讲一下小数的处理。例如 30/8,如果在 Bash 脚本中只能得到3,而实际结果是3.75,由于 Bash 只支持整数,所以结果只保留了结果的整数部分。

这显然局限了脚本的使用范围。还好可以使用”bc”命令来扩充数学运算范围。bc 是一个功能强大的计算器语言,用于处理各种数学运算。

现在,我们不需要了解理多细节,只需要通过管道运算符将计算结果传递至 bc,格式如下:

# echo "$num1/$num2" | bc -l

于是,可以编写一个用于精解计算的除法脚本”divi.sh”,内容如下:

#!/usr/bin/bash

num1=30
num2=8

result=$(echo "$num1/$num2" | bc -l)

echo "The result is $result"

bc 命令的”-l”参数表示加载标准的数学库。默认情况下,”bc”命令会保留小数点后20位,我们可以向”bc”命令传递”scale”参数来指定小数点后的位数,示例如下:

result=$(echo "scale=3; $num1/$num2" | bc -l)

Bash 脚本处理小数

示例脚本如下:

#!/usr/bin/bash

read -p "Enter first number: " num1
read -p "Enter second number: " num2

sum=$( echo "$num1+$num2" | bc -l)
sub=$( echo "scale=2; $num1-$num2" | bc -l)
echo "The summation of $num1 and $num2 is $sum"
echo "The substraction of $num2 from $num1 is $sub"

了解了 Bash 脚本的数学运算后,就可以继续了解下一节 >>Bash 基础(五):Bash 使用数组<<

One thought on “Bash 基础(四):数学运算”

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注