当前时区为 UTC + 8 小时



发表新帖 回复这个主题  [ 9 篇帖子 ] 
作者 内容
1 楼 
 文章标题 : shell的条件判断
帖子发表于 : 2008-12-07 7:56 

注册: 2008-11-17 14:13
帖子: 33
送出感谢: 0 次
接收感谢: 0 次
最近在学shell,到现在对shell的条件判断还是有点迷糊:(原来写错了,现在改过来。)
代码1:
代码:
declare -i a=1
echo "Input an integer please:"
read b
if [ $a < $b ];then
echo "a<b"
else
echo "a>b"
fi

运行后得出的结果是:
引用:
Input an integer please:
2
po.sh: line 7: 2: 没有该文件或目录
a>b

代码2:
代码:
declare -i a=1
echo "Input an integer please:"
read b
if [ $a -lt $b ];then
echo "a<b"
else
echo "a>b"
fi

运行后得出的结果是:
引用:
Input an integer please:
3
a<b

我就是搞不清楚:小于号“<"到底怎么用才对,为什么“<“和“-lt"是同一个意思却得到不同的结果。
拜托,各位帮帮忙,帮我解决一下。[list=]
引用:
[/list]


最后由 gbluo 编辑于 2008-12-07 10:09,总共编辑了 2 次

页首
 用户资料  
 
2 楼 
 文章标题 : Re: vi上的条件判断
帖子发表于 : 2008-12-07 8:50 

注册: 2008-05-24 8:30
帖子: 1453
送出感谢: 2
接收感谢: 30
你确认那是vi吗?应该先搞清楚在学什么吧。


页首
 用户资料  
 
3 楼 
 文章标题 : Re: vi上的条件判断
帖子发表于 : 2008-12-07 10:07 

注册: 2008-11-17 14:13
帖子: 33
送出感谢: 0 次
接收感谢: 0 次
aerofox 写道:
你确认那是vi吗?应该先搞清楚在学什么吧。

啊,是我的错,我是说用vi编shell,嘿嘿。。。


页首
 用户资料  
 
4 楼 
 文章标题 : Re: shell的条件判断
帖子发表于 : 2008-12-07 10:10 

注册: 2008-11-17 14:13
帖子: 33
送出感谢: 0 次
接收感谢: 0 次
不过,貌似,我不喜欢别人用老气横秋的语气跟我说话。


页首
 用户资料  
 
5 楼 
 文章标题 : Re: shell的条件判断
帖子发表于 : 2008-12-07 11:01 
头像

注册: 2006-07-02 11:16
帖子: 12522
地址: 廣州
送出感谢: 0 次
接收感谢: 8
RTFM...
代码:
       string1 < string2
              True if string1 sorts before string2  lexicographically  in  the
              current locale.

       string1 > string2
              True  if  string1  sorts  after string2 lexicographically in the
              current locale.

       arg1 OP arg2
              OP is one of -eq, -ne, -lt, -le, -gt, or -ge.  These  arithmetic
              binary  operators return true if arg1 is equal to, not equal to,
              less than, less than or equal to, greater than, or greater  than
              or  equal  to arg2, respectively.  Arg1 and arg2 may be positive
              or negative integers.


至于那个找不到文件的问题
代码:
[: [ arg... ]
    This is a synonym for the "test" builtin, but the last
    argument must be a literal `]', to match the opening `['.

所以那个 < 被解释成重定向了, 应该写 '<'


_________________
^_^ ~~~
要理解递归,首先要理解递归。

地球人都知道,理论上,理论跟实际是没有差别的,但实际上,理论跟实际的差别是相当大滴。


页首
 用户资料  
 
6 楼 
 文章标题 : Re: shell的条件判断
帖子发表于 : 2008-12-07 11:13 

注册: 2008-05-24 8:30
帖子: 1453
送出感谢: 2
接收感谢: 30
既然是shell,我还知道一点点。开始我还真以为是学vim脚本编程,但看着脚本又不太像vim的脚本,所以找楼主确认一下。
<和-lt是不样的,在[]中应该用-lt比较两个数值。如果是bash,也可以用[[ ]],这里面可以用<,但是比较的是字符串。
比较:
代码:
[[ 123 < 23 ]] && echo ok


代码:
[[ 123 -lt 23 ]] && echo ok

在单个[]的表达式中,<当作了普通的重定向符。
代码:
[ $a < $b ]

相当于
代码:
test $a < $b;

如果$b正好是一个可读文件的文件名,你的程序将会输出
代码:
a<b

你可以试试:
代码:
touch 0

再运行你的程序,提示输入时输入
代码:
0


页首
 用户资料  
 
7 楼 
 文章标题 : Re: shell的条件判断
帖子发表于 : 2008-12-07 11:19 

注册: 2008-05-24 8:30
帖子: 1453
送出感谢: 2
接收感谢: 30
跟5楼学会了在[]中要吧用转义的<,不过还是字符串比较,不是数值比较。


页首
 用户资料  
 
8 楼 
 文章标题 : Re: shell的条件判断
帖子发表于 : 2008-12-08 7:07 

注册: 2008-11-17 14:13
帖子: 33
送出感谢: 0 次
接收感谢: 0 次
谢谢aerofox.和BigSnake.NET.


页首
 用户资料  
 
9 楼 
 文章标题 : Re: shell的条件判断
帖子发表于 : 2008-12-08 7:38 

注册: 2008-11-17 14:13
帖子: 33
送出感谢: 0 次
接收感谢: 0 次
gbluo 写道:
不过,貌似,我不喜欢别人用老气横秋的语气跟我说话。

I am sorry for my roudness!Thank you for your assistance.


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

当前时区为 UTC + 8 小时


在线用户

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


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

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

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