欢迎,来自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 基础(四):数学运算”