Unix/Linux - Shell 内置数学函数

你好,有抱负的程序员们!今天,我们将踏上一段激动人心的旅程,探索Unix/Linux shell内置的数学函数。如果你是编程新手,不用担心——我会通过清晰的解释和丰富的示例来引导你每一步。让我们开始吧!

Unix / Linux - Builtin Functions

什么是Shell内置函数?

在我们深入研究数学函数之前,让我们先了解一下什么是shell内置函数。这些是内置于shell本身的命令,意味着它们不需要单独安装。它们随时待命,帮助您高效地执行各种任务。

为什么在Shell脚本中使用数学函数?

你可能想知道,“我们为什么需要在shell脚本中使用数学?”想象一下,你正在编写一个脚本来计算你的月度预算或分析一些数据。这时候,这些函数就派上用场了!它们允许你直接在shell脚本中进行计算,为你节省时间和精力。

常见的Shell内置数学函数

让我们探索一些在Unix/Linux shell中最常用的数学函数。我们将使用Bash shell作为示例,因为它被广泛使用并且许多系统预装了它。

1. 基本算术运算

Bash提供了几种执行基本算术的方法。让我们看看它们:

a. 使用 expr 命令

#!/bin/bash
a=10
b=5
sum=$(expr $a + $b)
echo "The sum of $a and $b is: $sum"

这个脚本将输出:The sum of 10 and 5 is: 15

在这里,expr 用来评估表达式 $a + $b。结果然后存储在变量 sum 中。

b. 使用双圆括号 (( ))

#!/bin/bash
a=10
b=5
((sum = a + b))
echo "The sum of $a and $b is: $sum"

这种方法更简洁,通常用于简单的算术运算。

2. 更复杂的数学运算

对于更复杂的计算,Bash提供了 bc 命令。虽然它不是严格意义上的内置命令,但它通常可用且非常有用。

#!/bin/bash
pi=$(echo "scale=2; 22/7" | bc)
echo "The value of pi (to 2 decimal places) is: $pi"

输出:The value of pi (to 2 decimal places) is: 3.14

在这里,scale=2 设置了小数位数,bc 执行除法。

常用数学运算表

下面是您在Bash中可以执行的数学运算的便捷表格:

运算 符号 示例
加法 + echo $((5 + 3))
减法 - echo $((10 - 4))
乘法 * echo $((6 * 7))
除法 / echo $((20 / 5))
求余 % echo $((17 % 3))
幂运算 ** echo $((2 ** 3))

高级数学函数

现在我们已经覆盖了基础知识,让我们探索一些更高级的数学函数。这些不是内置于Bash本身的,但它们通常通过 bc 命令在shell脚本中使用。

1. 平方根

#!/bin/bash
number=16
sqrt=$(echo "scale=2; sqrt($number)" | bc)
echo "The square root of $number is: $sqrt"

输出:The square root of 16 is: 4.00

2. 正弦和余弦

#!/bin/bash
angle=30
sin=$(echo "scale=4; s($angle * 3.14159 / 180)" | bc -l)
cos=$(echo "scale=4; c($angle * 3.14159 / 180)" | bc -l)
echo "The sine of $angle degrees is: $sin"
echo "The cosine of $angle degrees is: $cos"

输出:

The sine of 30 degrees is: .4999
The cosine of 30 degrees is: .8660

注意 bc 命令的 -l 选项,它加载了用于三角函数的数学库。

实用示例:温度转换器

让我们用我们新获得的知识来一个实用示例——温度转换器!

#!/bin/bash

echo "Temperature Converter"
echo "1. Celsius to Fahrenheit"
echo "2. Fahrenheit to Celsius"
read -p "Enter your choice (1/2): " choice

case $choice in
1)
read -p "Enter temperature in Celsius: " celsius
fahrenheit=$(echo "scale=2; ($celsius * 9/5) + 32" | bc)
echo "$celsius°C is equal to $fahrenheit°F"
;;
2)
read -p "Enter temperature in Fahrenheit: " fahrenheit
celsius=$(echo "scale=2; ($fahrenheit - 32) * 5/9" | bc)
echo "$fahrenheit°F is equal to $celsius°C"
;;
*)
echo "Invalid choice"
;;
esac

这个脚本展示了我们如何在现实世界的场景中使用数学函数。它允许用户在摄氏度和华氏度之间转换温度。

结论

恭喜!你已经迈出了进入shell脚本和数学函数世界的第一步。记住,熟能生巧。尝试使用这些函数创建你自己的脚本——也许是一个计算器或一个分析数据的脚本。

在你继续编程旅程的过程中,你会发现这些基本的数学运算是更复杂数值计算的基础。继续探索,继续学习,最重要的是,享受编程的乐趣!

未来技术巫师们,编码愉快!??‍??‍?

Credits: Image by storyset