我是新来的bash脚本。 我写了一个简单的代码来查找从10到190的所有10的倍数的平均值。 代码是:为什么代码不工作?
#!/bin/bash
a=10
ans=0
while[ $a -le 190 ]
do
ans=`expr $a + $ans'
a=`expr $a + 10'
done
echo "$ans"
那么这个程序有什么问题?
我是新来的bash脚本。 我写了一个简单的代码来查找从10到190的所有10的倍数的平均值。 代码是:为什么代码不工作?
#!/bin/bash
a=10
ans=0
while[ $a -le 190 ]
do
ans=`expr $a + $ans'
a=`expr $a + 10'
done
echo "$ans"
那么这个程序有什么问题?
这是更有效地使用这样一个封闭的形式解决方案:
lower=10
upper=190
echo $((($upper + $lower)/2))
你在你的代码的语法错误,试试这个,而不是 - 你所面对
#!/bin/bash
a=10
ans=0
while [ $a -le 190 ]
do
ans=`expr $a + $ans`
a=`expr $a + 10`
done
echo "$ans"
错误 -
- 之后没有空间,而
- 使用'在ANS的代替` =`一个EXPR $ + $ ANS' 的
- 使用“而不是` A =`EXPR $ A + 10 “
让你有夫妇在你的代码错误的,这是你的正确版本:
a=10
ans=0
while test $a -le 190
do
a=$(expr $a + 10)
ans=$(expr $a + $ans)
done
echo $ans
的问题是,你必须使用test
在循环像while
或if
语句,也为expr
工作,你必须把一切都放在括号和dollar sign
出它在启动。回声中的""
没有用处,只要echo将它们全部相同即可。
你的脚本有一些语法问题。一个建议你可以使用“let”而不是“expr”命令,它使你的代码更具可读性。例如:让a = 10 + 1。用可执行权限保存文件或使用“源”执行。
#!/bin/bash
a=10
ans=0
count=0
while [ $a -le 190 ]; do
ans=`expr $a + $ans`
a=`expr $a + 10`
count=`expr $count + 1`
done
echo "avg: $((ans/count))"
尝试粘贴http://www.shellcheck.net/中的代码以获取基本错误。纠正它们并编辑,如果你仍然有问题。另外,请阅读[如何在bash脚本中添加数字](http://stackoverflow.com/a/6348941/1983854)。最后,“不工作”是没有用的:什么不起作用?你会得到什么错误?你可能想阅读[问]。 – fedorqui
谢谢。解决了这个问题。 是一个非常愚蠢的错误。 :) – hfarwah
然后提供有关错误的反馈,并最终[写下自己的答案](http://stackoverflow.com/help/self-answer)或接受其中一个答案解。 – fedorqui