分页: 1 / 1
各位帮我看看这个小脚本为什么会出错?
发表于 : 2008-12-08 15:24
由 cavalier
#!/bin/csh
set energy = 2
if ($energy > 0.5) then
echo " you are right "
else
echo " you are wrong "
endif
运行出现错误提示:
if: Badly formed number.
如果我改if ($energy > 0.5) 为if ($energy > 1)则运行正确。
现在我要对0.5这样的小数进行大小关系判定,该怎么办?
谢谢!
Re: 各位帮我看看这个小脚本为什么会出错?
发表于 : 2008-12-08 15:36
由 eexpress
shell判断啊。都是整数。
如果使用bc带浮点库,用 (())语法作减法判断,还差不多吧。
Re: 各位帮我看看这个小脚本为什么会出错?
发表于 : 2008-12-08 15:38
由 aerofox
只能做整数比较。
如果要做小数比较,你可以分别比较整数部分和小数部分,或者用bc去做减法再看结果的符号,或者想一些其它方法。
Re: 各位帮我看看这个小脚本为什么会出错?
发表于 : 2008-12-08 15:54
由 cavalier
aerofox 写了:只能做整数比较。
如果要做小数比较,你可以分别比较整数部分和小数部分,或者用bc去做减法再看结果的符号,或者想一些其它方法。
好像没那么简单:我要实现这样的目的,麻烦你们再帮忙看看?举例:
代码: 全选
set en = (0.06 0.2)
foreach energy($en)
if ($energy >= 0.05 && $energy < 0.15) then
set y=3
else if ($energy > 0.15 && $energy <= 0.25) then
set y=4
endif
end
当然,现在这样写是不可能实现的,原因如我刚才所述。要怎样才能实现呢?
谢谢了哈
Re: 各位帮我看看这个小脚本为什么会出错?
发表于 : 2008-12-08 16:08
由 yjcong
a=8
if (( 6 > `echo $a/2|bc` ));then
echo 111
else
echo 222
fi
输出结果为111
Re: 各位帮我看看这个小脚本为什么会出错?
发表于 : 2008-12-08 16:11
由 cavalier
yjcong 写了:a=8
if (( 6 > `echo $a/2|bc` ));then
echo 111
else
echo 222
fi
输出结果为111
非常谢谢,只可惜我对bc不熟悉,看不懂你所写的,无法做更多的修改。
Re: 各位帮我看看这个小脚本为什么会出错?
发表于 : 2008-12-08 16:12
由 cavalier
yjcong, yjcong 写道:
a=8
if (( 6 > `echo $a/2|bc` ));then
echo 111
else
echo 222
fi
输出结果为111
非常谢谢,只可惜我对bc不熟悉,看不懂你所写的,无法做更多的修改。
Re: 各位帮我看看这个小脚本为什么会出错?
发表于 : 2008-12-08 16:18
由 eexpress
使用bc -l
Re: 各位帮我看看这个小脚本为什么会出错?
发表于 : 2008-12-08 16:43
由 cavalier
eexpress 写了:使用bc -l
不懂,麻烦根据我写的给我写两条看看,我好理解。
关键是我还没有看到过关于bc的有关知识
谢了哦
Re: 各位帮我看看这个小脚本为什么会出错?
发表于 : 2008-12-08 22:00
由 aerofox
如果energy的值只能用小数(比如它是用户输入),那么可以用bc:
代码: 全选
if ( `echo "$energy >= 0.05 && $energy < 0.15" | bc` == 1 ) then
如果energy的值是如上面的例子一样由程序预先定义好的,直接换成整数就可以了:
下面的比较也用*100后的数值。
Re: 各位帮我看看这个小脚本为什么会出错?
发表于 : 2008-12-09 8:53
由 eexpress
代码: 全选
☎ [ `echo 9/2 |bc -l` \< 4 ] && echo ok || echo err
err
☎ [ `echo 9/2 |bc -l` \< 5 ] && echo ok || echo err
ok
可以不带-l的。
你搞这bt的干嘛。如果涉及浮点运算。直接perl吧。这写法很丑陋的。lin那么多脚本的选择哦。
Re: 各位帮我看看这个小脚本为什么会出错?
发表于 : 2008-12-09 9:13
由 yjcong
eexpress 写了:代码: 全选
☎ [ `echo 9/2 |bc -l` \< 4 ] && echo ok || echo err
err
☎ [ `echo 9/2 |bc -l` \< 5 ] && echo ok || echo err
ok
可以不带-l的。
你搞这bt的干嘛。如果涉及浮点运算。直接perl吧。这写法很丑陋的。lin那么多脚本的选择哦。
指谁呢??
Re: 各位帮我看看这个小脚本为什么会出错?
发表于 : 2008-12-13 15:13
由 poweroff
莫生气,生气伤身体,伤和气。
其实bt也不是什么贬义词。。