为什么代码不起作用?

时间:2016-04-26 06:17:20

标签: bash shell loops scripting mean

我是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"

这个程序有什么问题?

4 个答案:

答案 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 ))