我已经做了一些我认为应该是一个名为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中完成简单的数学?
(请让这件事容易理解-请假设我是一个非程序员和愚蠢的人)
发布于 2014-11-23 02:44:03
巴什并不痛苦:
#!/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语句中使用的测试非常有用。
发布于 2014-11-23 02:42:34
删除$之前的空格,并从Var5声明中的行中移动括号。
#!/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的值,因此需要两个括号。
发布于 2014-11-23 02:41:50
检查bash命令"expr“
例如,如果要添加两个数字: var=expr 2 + 6
有关更多表达式,请参阅手册页。
https://stackoverflow.com/questions/27085013
复制相似问题