我做了一些我认为应该是名为 bashispainful.sh 的 shell 脚本:
代码:
#!/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
注意事项
考虑:
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
语句中使用。
关于linux - 我怎样才能在 bash 中做基础数学?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27085013/