我是bash脚本新手。 我写了一个简单的代码来查找从10到190(包括10和190)的所有十的倍数的平均值。 代码是:
#!/bin/bash
a=10
ans=0
while[ $a -le 190 ]
do
ans=`expr $a + $ans'
a=`expr $a + 10'
done
echo "$ans"
这个程序有什么问题?
答案 0 :(得分:1)
您的代码中存在语法错误,请尝试此操作 -
#!/bin/bash
a=10
ans=0
while [ $a -le 190 ]
do
ans=`expr $a + $ans`
a=`expr $a + 10`
done
echo "$ans"
您面临的错误 -
- 后没有空格
- 在 ans =`expr $ a + $ ans'
中使用' 代替`- 在 a =`expr $ a + 10'
中使用' 代替`
答案 1 :(得分:0)
所以你的代码中有几个错误,这是你的正确版本:
func main() {
a1 := alias(1)
t := aliases{&a1}
orig := []*int{}
for _, each := range t {
temp := int(*each)
orig = append(orig, &temp)
}
fmt.Printf("%#v\n", orig) // []*int{(*int)(0x10434114)}
}
问题是您必须在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
没有用,只要回声处理它们都是一样的。
答案 2 :(得分:0)
您的脚本存在一些语法问题。你可以使用一个建议"让"而不是" expr"命令它使您的代码更具可读性。例:让a = 10 + 1。使用可执行权限保存文件或使用" source"执行。
#!/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))"
答案 3 :(得分:-1)
使用这样的封闭式解决方案更有效:
lower=10
upper=190
echo $(( ($upper + $lower) / 2 ))