当前时区为 UTC + 8 小时



发表新帖 回复这个主题  [ 13 篇帖子 ] 
作者 内容
1 楼 
 文章标题 : 各位帮我看看这个小脚本为什么会出错?
帖子发表于 : 2008-12-08 15:24 

注册: 2008-02-22 22:17
帖子: 22
送出感谢: 0 次
接收感谢: 0 次
#!/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这样的小数进行大小关系判定,该怎么办?
谢谢!


页首
 用户资料  
 
2 楼 
 文章标题 : Re: 各位帮我看看这个小脚本为什么会出错?
帖子发表于 : 2008-12-08 15:36 
头像

注册: 2005-08-14 21:55
帖子: 58428
地址: 长沙
送出感谢: 4
接收感谢: 272
shell判断啊。都是整数。
如果使用bc带浮点库,用 (())语法作减法判断,还差不多吧。


_________________
● 鸣学


页首
 用户资料  
 
3 楼 
 文章标题 : Re: 各位帮我看看这个小脚本为什么会出错?
帖子发表于 : 2008-12-08 15:38 

注册: 2008-05-24 8:30
帖子: 1453
送出感谢: 2
接收感谢: 30
只能做整数比较。
如果要做小数比较,你可以分别比较整数部分和小数部分,或者用bc去做减法再看结果的符号,或者想一些其它方法。


页首
 用户资料  
 
4 楼 
 文章标题 : Re: 各位帮我看看这个小脚本为什么会出错?
帖子发表于 : 2008-12-08 15:54 

注册: 2008-02-22 22:17
帖子: 22
送出感谢: 0 次
接收感谢: 0 次
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

当然,现在这样写是不可能实现的,原因如我刚才所述。要怎样才能实现呢?
谢谢了哈


页首
 用户资料  
 
5 楼 
 文章标题 : Re: 各位帮我看看这个小脚本为什么会出错?
帖子发表于 : 2008-12-08 16:08 
头像

注册: 2006-02-28 3:11
帖子: 2470
送出感谢: 0 次
接收感谢: 0 次
a=8

if (( 6 > `echo $a/2|bc` ));then
echo 111
else
echo 222
fi

输出结果为111


_________________
一梦三年,
松风依旧,
萝月何曾老.


灵幽听微, 谁观玉颜?
灼灼春华, 绿叶含丹.


页首
 用户资料  
 
6 楼 
 文章标题 : Re: 各位帮我看看这个小脚本为什么会出错?
帖子发表于 : 2008-12-08 16:11 

注册: 2008-02-22 22:17
帖子: 22
送出感谢: 0 次
接收感谢: 0 次
yjcong 写道:
a=8

if (( 6 > `echo $a/2|bc` ));then
echo 111
else
echo 222
fi

输出结果为111


非常谢谢,只可惜我对bc不熟悉,看不懂你所写的,无法做更多的修改。


页首
 用户资料  
 
7 楼 
 文章标题 : Re: 各位帮我看看这个小脚本为什么会出错?
帖子发表于 : 2008-12-08 16:12 

注册: 2008-02-22 22:17
帖子: 22
送出感谢: 0 次
接收感谢: 0 次
yjcong, yjcong 写道:
a=8

if (( 6 > `echo $a/2|bc` ));then
echo 111
else
echo 222
fi

输出结果为111


非常谢谢,只可惜我对bc不熟悉,看不懂你所写的,无法做更多的修改。


页首
 用户资料  
 
8 楼 
 文章标题 : Re: 各位帮我看看这个小脚本为什么会出错?
帖子发表于 : 2008-12-08 16:18 
头像

注册: 2005-08-14 21:55
帖子: 58428
地址: 长沙
送出感谢: 4
接收感谢: 272
使用bc -l


_________________
● 鸣学


页首
 用户资料  
 
9 楼 
 文章标题 : Re: 各位帮我看看这个小脚本为什么会出错?
帖子发表于 : 2008-12-08 16:43 

注册: 2008-02-22 22:17
帖子: 22
送出感谢: 0 次
接收感谢: 0 次
eexpress 写道:
使用bc -l

不懂,麻烦根据我写的给我写两条看看,我好理解。
关键是我还没有看到过关于bc的有关知识
谢了哦


页首
 用户资料  
 
10 楼 
 文章标题 : Re: 各位帮我看看这个小脚本为什么会出错?
帖子发表于 : 2008-12-08 22:00 

注册: 2008-05-24 8:30
帖子: 1453
送出感谢: 2
接收感谢: 30
如果energy的值只能用小数(比如它是用户输入),那么可以用bc:
代码:
if ( `echo "$energy >= 0.05 && $energy < 0.15" | bc` == 1 ) then

如果energy的值是如上面的例子一样由程序预先定义好的,直接换成整数就可以了:
代码:
en=( 6 20 )

下面的比较也用*100后的数值。


页首
 用户资料  
 
11 楼 
 文章标题 : Re: 各位帮我看看这个小脚本为什么会出错?
帖子发表于 : 2008-12-09 8:53 
头像

注册: 2005-08-14 21:55
帖子: 58428
地址: 长沙
送出感谢: 4
接收感谢: 272
代码:
☎ [ `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那么多脚本的选择哦。


_________________
● 鸣学


页首
 用户资料  
 
12 楼 
 文章标题 : Re: 各位帮我看看这个小脚本为什么会出错?
帖子发表于 : 2008-12-09 9:13 
头像

注册: 2006-02-28 3:11
帖子: 2470
送出感谢: 0 次
接收感谢: 0 次
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那么多脚本的选择哦。

指谁呢??


_________________
一梦三年,
松风依旧,
萝月何曾老.


灵幽听微, 谁观玉颜?
灼灼春华, 绿叶含丹.


页首
 用户资料  
 
13 楼 
 文章标题 : Re: 各位帮我看看这个小脚本为什么会出错?
帖子发表于 : 2008-12-13 15:13 
头像

注册: 2008-12-13 15:03
帖子: 395
送出感谢: 0 次
接收感谢: 1
莫生气,生气伤身体,伤和气。

其实bt也不是什么贬义词。。


_________________
一条狗的马甲!
对不起,我承认我是一只穿着马甲的狗!


页首
 用户资料  
 
显示帖子 :  排序  
发表新帖 回复这个主题  [ 13 篇帖子 ] 

当前时区为 UTC + 8 小时


在线用户

正在浏览此版面的用户:没有注册用户 和 1 位游客


不能 在这个版面发表主题
不能 在这个版面回复主题
不能 在这个版面编辑帖子
不能 在这个版面删除帖子
不能 在这个版面提交附件

前往 :  
本站点为公益性站点,用于推广开源自由软件,由 DiaHosting VPSBudgetVM VPS 提供服务。
我们认为:软件应可免费取得,软件工具在各种语言环境下皆可使用,且不会有任何功能上的差异;
人们应有定制和修改软件的自由,且方式不受限制,只要他们自认为合适。

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
简体中文语系由 王笑宇 翻译