首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我怎么能在巴什做基础数学?

我怎么能在巴什做基础数学?
EN

Stack Overflow用户
提问于 2014-11-23 02:36:21
回答 4查看 354关注 0票数 2

我已经做了一些我认为应该是一个名为bashispainful.sh的shell脚本:

代码:

代码语言:javascript
复制
#!/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

我想收到以下的输出:

代码语言:javascript
复制
50
2
5
15
75

我目前的产出:

代码语言:javascript
复制
./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中完成简单的数学?

(请让这件事容易理解-请假设我是一个非程序员和愚蠢的人)

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2014-11-23 02:44:03

巴什并不痛苦:

代码语言:javascript
复制
#!/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

产出如下:

代码语言:javascript
复制
50
2
5
15
75

备注

考虑:

代码语言:javascript
复制
Var1= $((10*5))

bash完成算术替换后,该命令如下所示:

代码语言:javascript
复制
Var1= 50

该命令表示(a)暂时将Var1设置为空,(b)运行名为50的命令。由于没有名为50的命令,您将收到以下错误:

代码语言:javascript
复制
Bashispainful.sh: line 2: 50: command not found

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

代码语言:javascript
复制
Var1=$((10*5))

考虑:

代码语言:javascript
复制
Var5= ($(Var4)*$(Var3))

这会将Var5临时设置为空,用于名称以(开头的命令。这是无效的。因此出现了错误:

代码语言:javascript
复制
./Bashispainful.sh: line 6: syntax error near unexpected 

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

代码语言:javascript
复制
Var5=$(($Var4*$Var3))

但是,由于bash并不痛苦,它理解算术表达式中的字符串是shell变量。因此,没有必要使用美元符号,可以将上述数字简化为:

代码语言:javascript
复制
Var5=$((Var4*Var3))

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

代码语言:javascript
复制
((Var5=Var4*Var3))

注意,$((...))返回算术计算的值,但((...))不返回任何值。它确实设置了一个退出代码,这使得它对于if语句中使用的测试非常有用。

票数 4
EN

Stack Overflow用户

发布于 2014-11-23 02:42:34

删除$之前的空格,并从Var5声明中的行中移动括号。

代码语言:javascript
复制
#!/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

空格使用声明,您希望读取来自Var4和Var3的值,因此需要两个括号。

票数 2
EN

Stack Overflow用户

发布于 2014-11-23 02:41:50

检查bash命令"expr“

例如,如果要添加两个数字: var=expr 2 + 6

有关更多表达式,请参阅手册页。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27085013

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档