Merge pull request #29720 from wxy/20230703.0-️-Bash-Basics-Series-4-Arithmetic-Operations

RP:published/20230703.0 ️ Bash Basics Series 4 Arithmetic Operations.md
This commit is contained in:
Xingyu.Wang 2023-07-17 11:07:04 +08:00 committed by GitHub
commit a15d7a0c6a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -3,16 +3,20 @@
[#]: author: "Abhishek Prakash https://itsfoss.com/author/abhishek/"
[#]: collector: "lkxed"
[#]: translator: "geekpi"
[#]: reviewer: " "
[#]: publisher: " "
[#]: url: " "
[#]: reviewer: "wxy"
[#]: publisher: "wxy"
[#]: url: "https://linux.cn/article-16006-1.html"
Bash 基础知识系列 #4:算术运算
======
你可以使用 bash 脚本做很多事情。对变量执行简单的算术运算就是其中之一。
![][0]
bash shell 中算术运算的语法如下:
> 在本系列的第四章,学习在 Bash 中使用基本数学运算。
你可以使用 Bash 脚本做很多事情。对变量执行简单的算术运算就是其中之一。
Bash shell 中算术运算的语法如下:
```
$((arithmetic_operation))
@ -24,7 +28,7 @@ $((arithmetic_operation))
sum=$(($num1 + $num2))
```
(()) 内空格的使用没有限制。你可以使用 `$(( $num1+ $num2))`、`$(( $num1+ $num2 ))` 或者 `$(( $num1+ $num2 ))`。它们都一样。
`(())` 内空格的使用没有限制。你可以使用 `$(( $num1+ $num2))`、`$(( $num1+ $num2 ))` 或者 `$(( $num1+ $num2 ))`。它们都一样。
在通过示例详细讨论之前,我先分享一下它支持的算术运算符。
@ -34,16 +38,16 @@ sum=$(($num1 + $num2))
| 运算符 | 描述 |
| :- | :- |
| + | 加法 |
| - | 减法|
| * | 乘法|
| / | 整数除法(不带小数) |
| % | 模除法(仅余数)|
| ** | 求幂a 的 b 次方)|
| `+` | 加法 |
| `-` | 减法|
| `*` | 乘法|
| `/` | 整数除法(不带小数) |
| `%` | 模除法(仅余数)|
| `**`` | 求幂a 的 b 次方)|
> 🚧 Bash 不支持浮点数(小数)。你必须使用其他命令(例如“bc”)来处理它们。
> 🚧 Bash 不支持浮点数(小数)。你必须使用其他命令(例如 `bc`)来处理它们。
### bash 中的加法和减法
### Bash 中的加法和减法
让我们通过编写一个脚本来看看它,该脚本从用户那里获取两个数字,然后打印它们的总和和减法。
@ -59,7 +63,7 @@ echo "The summation of $num1 and $num2 is $sum"
echo "The substraction of $num2 from $num1 is $sub"
```
我相信你熟悉上一章中使用 read 命令来[在 bash 中接受用户输入][1]。
我相信你熟悉上一章中使用 `read` 命令来 [在 Bash 中接受用户输入][1]。
你应该关注这两行:
@ -72,11 +76,11 @@ sub=$(($num1-$num2))
![Example of addition and subtraction in Bash shell script][2]
### bash 中的乘法
### Bash 中的乘法
现在让我们转向乘法。
这是一个将公里转换为米的示例脚本(这给美国读者带来了麻烦D。作为参考1 公里等于 1000 米。
这是一个将公里转换为米的示例脚本(这给美国读者带来了麻烦 :D。作为参考1 公里等于 1000 米。
```
#!/bin/bash
@ -93,7 +97,7 @@ echo "$km KM equals to $meters meters"
看起来不错,不是吗? 让我们继续进行除法。
### bash 脚本中的除法
### Bash 脚本中的除法
让我们用一个非常简单的脚本来看看除法:
@ -122,11 +126,11 @@ The result is 8
**但这不正确。** 正确答案应该是 8.33333。
这是因为 bash 默认情况下只处理整数。你需要额外的命令行工具来处理浮点(小数)。
这是因为 Bash 默认情况下只处理整数。你需要额外的命令行工具来处理浮点(小数)。
最流行的工具是[bc][4],它是一种处理数学运算的非常强大的计算器语言。不过,你现在不需要关注细节。
最流行的工具是 [bc][4],它是一种处理数学运算的非常强大的计算器语言。不过,你现在不需要关注细节。
你必须通过管道将算术运算“回显”给 bc
你必须通过管道将算术运算“回显”给 `bc`
```
echo "$num1/$num2" | bc -l
@ -151,17 +155,17 @@ echo "The result is $result"
The result is 8.33333333333333333333
```
请注意 `result=$(echo "$num1/$num2" | bc -l)`,它现在使用你在[本系列第 2 章][5]中看到的命令替换。
请注意 `result=$(echo "$num1/$num2" | bc -l)`,它现在使用你在 [本系列第 2 章][5] 中看到的命令替换。
`-l` 选项加载标准数学库。默认情况下bc 最多保留 20 位小数。你可以通过以下方式将比例更改为较小的
`-l` 选项加载标准数学库。默认情况下,`bc` 最多保留 20 位小数。你可以通过以下方式将比例更改为较小的位数
```
result=$(echo "scale=3; $num1/$num2" | bc -l)
```
让我们看看 bash 中浮点的更多示例。
让我们看看 Bash 中浮点的更多示例。
### 在 bash 脚本中处理浮点
### 在 Bash 脚本中处理浮点
让我们修改 `sum.sh` 脚本来处理浮点。
@ -183,15 +187,13 @@ echo "The substraction of $num2 from $num1 is $sub"
### 🏋️🤸 练习时间
是时候一起做一些数学和 bash 练习了。
是时候一起做一些数学和 Bash 练习了。
**练习 1**:创建一个脚本,接受以 GB 为单位的输入并以 MB 和 KB 为单位输出其等效值。
**练习 2**:编写一个带有两个参数并以指数格式输出结果的脚本。
**练习 2**:编写一个带有两个参数并以指数格式输出结果的脚本。因此,如果输入 2 和 3输出将为 8即 2 的 3 次方。
因此,如果输入 2 和 3输出将为 8即 2 的 3 次方。
**提示**:使用幂运算符**
**提示**:使用幂运算符 `**`
**练习 3**:编写一个将摄氏度转换为华氏度的脚本。
@ -199,7 +201,9 @@ echo "The substraction of $num2 from $num1 is $sub"
你可以在社区中讨论练习及其方案。
在下一章中,你将[了解 Bash 中的数组][7]。敬请关注。
在下一章中,你将 [了解 Bash 中的数组][7]。敬请关注。
*题图MJ/8a9dfb90-99a4-4203-bc44-d805d09bc16f*
--------------------------------------------------------------------------------
@ -208,7 +212,7 @@ via: https://itsfoss.com/bash-arithmetic-operation/
作者:[Abhishek Prakash][a]
选题:[lkxed][b]
译者:[geekpi](https://github.com/geekpi)
校对:[校对者ID](https://github.com/校对者ID)
校对:[wxy](https://github.com/wxy)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
@ -221,3 +225,4 @@ via: https://itsfoss.com/bash-arithmetic-operation/
[5]: https://itsfoss.com/bash-use-variables/
[6]: https://itsfoss.com/content/images/2023/07/floating-point-bash.png
[7]: https://itsfoss.com/bash-arrays/
[0]: https://img.linux.net.cn/data/attachment/album/202307/17/110316dmpou87g8ibhzb8t.jpg