我得到了" 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
答案 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计算布尔语句,则打印0
或1
,并将其映射到Bash条件,我们可以将bc命令替换为{ {1}}:
(( ))