如何在 bash 中进行基本数学运算?

2023-12-22

我做了一些我认为应该是名为 bashispainful.sh 的 shell 脚本的东西:

Code:

#!/bin/bash
Var1= $((10*5))
Var2= $((10/5))
Var3= $((10-5))
Var4= $((10+5))
Var5= ($(Var4)*$(Var3))
echo $Var1
echo $Var2
echo $Var3
echo $Var4
echo $Var5

我想收到输出:

50
2
5
15
75

我当前的输出:

./Bashispainful.sh: line 2: 50: command not found
./Bashispainful.sh: line 3: 2: command not found
./Bashispainful.sh: line 4: 5: command not found
./Bashispainful.sh: line 5: 15: command not found
./Bashispainful.sh: line 6: syntax error near unexpected token `('
./Bashispainful.sh: line 6: `Var5= ($(Var4)*$(Var3))'

我的目标是掌握在 bash 中进行基本数学运算的能力。我尝试过我能想到的每一个网站以及每一种括号、美元符号和缺乏的组合,坦率地说,我感到困惑和绝望。如何在 bash 中执行简单的数学运算?

(请让这变得容易理解 - 请假设我是一个非程序员并且很愚蠢)


Bash 并不痛苦:

#!/bin/bash
Var1=$((10*5))
Var2=$((10/5))
Var3=$((10-5))
Var4=$((10+5))
Var5=$((Var4*Var3))
echo $Var1
echo $Var2
echo $Var3
echo $Var4
echo $Var5

输出是:

50
2
5
15
75

Notes

考虑:

Var1= $((10*5))

bash 进行算术替换后,该命令如下所示:

Var1= 50

该命令表示(a)临时设置Var1清空,并且 (b) 运行名为50。由于没有名为50,您收到错误:

Bashispainful.sh: line 2: 50: command not found

解决方案是删除空间,以便Var1被分配给一个非空值:

Var1=$((10*5))

考虑:

Var5= ($(Var4)*$(Var3))

这一套Var5对于名称开头的命令暂时为空(。那是无效的。因此出现错误:

./Bashispainful.sh: line 6: syntax error near unexpected 

算术的正确 bash 语法是$((...))。因此,该行可以写成:

Var5=$(($Var4*$Var3))

然而,因为 bash 并不痛苦,所以它知道算术表达式中的字符串是 shell 变量。因此,美元符号是不必要的,上面可以简化为:

Var5=$((Var4*Var3))

或者,由于上面只是对变量进行赋值,因此可以进一步简化为:

((Var5=Var4*Var3))

注意$((...))返回算术计算的值,但是((...))不返回任何值。它确实设置了一个退出代码,这使得它对于诸如使用的测试很有用if声明。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 bash 中进行基本数学运算? 的相关文章