"整数表达式预期错误"在公元前

时间:2017-02-24 12:43:49

标签: bash shell unix bc

我得到了" bc:期望的整数表达式"在这一行:

numV=$numVtest
运行脚本时

。我该如何解决这个错误?

firstv=1200         #first velocity value
lastv=5000          #last velocity value
increment=200       #velocity increment
numVtest=100        #use to limit number of velocity panels
                #otherwise, use very large value (100)
#================================================
# Compute number of velocity panels

 numV='bc -l << -END
 ( ( $lastv - $firstv ) / $increment ) + 1
 END'
 if [ $numVtest -lt $numV ] ; then
 numV=$numVtest
 fi

3 个答案:

答案 0 :(得分:2)

numV不是数字;它是一个看起来像是对bc的调用的字符串,所以它不能用作-lt的参数。我怀疑你的意思是在其定义中使用反引号,而不是单引号。

numV=`bc -l << -END
...
`

但是,最好使用$(...)进行命令替换而不是反引号。

numV=$(bc -l << -END
( ( $lastv - $firstv ) / $increment ) + 1
END
)
if [ "$numVtest" -lt "$numV" ] ; then
    numV=$numVtest
fi

下一个问题是-lt仅适用于整数,而bc的结果可能是浮点值。您还需要在bc内进行比较。如果比较为真,bc将输出1,如果为假,则输出0。

result=$(bc -l << -END
( ( $lastv - $firstv ) / $increment ) + 1 > $numVtest
END
)
if [ "$result" = 1 ] ; then
    numV=$numVtest
fi

答案 1 :(得分:1)

如果预期结果为整数,则您不需要public void AddItem() { var temp = new List<string>(this.ComboBoxItems); temp.Add("abc" + (++this.counter)); this.ComboBoxItems = temp; } 。您可以改为使用bc语法:

$(())

答案 2 :(得分:1)

正如chepner's answer所指出的,您的问题是,您只需将字符串分配给numV

您也可以少使用一个操作:如果bc计算布尔语句,则打印01,并将其映射到Bash条件,我们可以将bc命令替换为{ {1}}:

(( ))