当前时区为 UTC + 8 小时



发表新帖 回复这个主题  [ 11 篇帖子 ] 
作者 内容
1 楼 
 文章标题 : 简单shell问题
帖子发表于 : 2009-10-27 16:00 

注册: 2009-07-06 14:26
帖子: 433
送出感谢: 2
接收感谢: 1
代码:
  1 #!/bin/bash
  2 function verify
  3 {
  4     if [ $1 -eq "bob" ]&&[ $2 -eq "555" ]
  5     then
  6         echo "verify ok"
  7     else
  8         echo "rejected"
  9     fi
 10 }
 11 verify bob 555

提示
代码:
./functionargc.sh: line 4: [: bob:此处需要整数表达式
rejected


请问那里错了?


_________________
生命只不过是上帝借你一用的资本!


页首
 用户资料  
 
2 楼 
 文章标题 : Re: 简单shell问题
帖子发表于 : 2009-10-27 16:02 
头像

注册: 2007-05-06 8:19
帖子: 7433
送出感谢: 0 次
接收感谢: 4
不是
if [ $1 -eq "bob" && $2 -eq "555" ]
么? :em02


页首
 用户资料  
 
3 楼 
 文章标题 : Re: 简单shell问题
帖子发表于 : 2009-10-27 16:02 

注册: 2009-07-06 14:26
帖子: 433
送出感谢: 2
接收感谢: 1
代码:
  1 #!/bin/bash
  2 if [ "$1" -eq "hello" ]
  3 then
  4     echo "hello! how are you?"
  5 elif [ "$1"=" "]
  6 then   
  7     echo "you must input parameters"
  8 else   
  9     echo "the only accept parameters is hello"
 10 fi

提示
代码:
./if.sh: line 2: [: :此处需要整数表达式
./if.sh: line 5: [: 丢失了“]”
the only accept parameters is hello


感觉同样的错误,但我找不出来


_________________
生命只不过是上帝借你一用的资本!


页首
 用户资料  
 
4 楼 
 文章标题 : Re: 简单shell问题
帖子发表于 : 2009-10-27 16:03 

注册: 2009-07-06 14:26
帖子: 433
送出感谢: 2
接收感谢: 1
冲浪板 写道:
不是
if [ $1 -eq "bob" && $2 -eq "555" ]
么? :em02



书上就是我那样写的,我试下你的看看

还是不行,一样的提示


_________________
生命只不过是上帝借你一用的资本!


页首
 用户资料  
 
5 楼 
 文章标题 : Re: 简单shell问题
帖子发表于 : 2009-10-27 16:10 
头像

注册: 2006-02-28 3:11
帖子: 2470
送出感谢: 0 次
接收感谢: 0 次
#!/bin/bash
function verify
{
if [ $1 = "bob" ]&&[ $2 = "555" ];
then
echo "verify ok"
else
echo "rejected"
fi
}
verify bob 555


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


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


页首
 用户资料  
 
6 楼 
 文章标题 : Re: 简单shell问题
帖子发表于 : 2009-10-27 16:19 

注册: 2009-07-06 14:26
帖子: 433
送出感谢: 2
接收感谢: 1
请问楼上,你写的这个和我的那个有什么区别?多了个“;”?
但加上这个后还是不行


_________________
生命只不过是上帝借你一用的资本!


页首
 用户资料  
 
7 楼 
 文章标题 : Re: 简单shell问题
帖子发表于 : 2009-10-27 16:25 
头像

注册: 2007-05-06 8:19
帖子: 7433
送出感谢: 0 次
接收感谢: 4
wangjun403 写道:
冲浪板 写道:
不是
if [ $1 -eq "bob" && $2 -eq "555" ]
么? :em02



书上就是我那样写的,我试下你的看看

还是不行,一样的提示

不一样的提示;
用“==”代替“-eq”


页首
 用户资料  
 
8 楼 
 文章标题 : Re: 简单shell问题
帖子发表于 : 2009-10-27 16:32 

注册: 2009-07-06 14:26
帖子: 433
送出感谢: 2
接收感谢: 1
没注意看,改成“==”确实可以,但是我想知道用“-eq“的情况下,那里错了


_________________
生命只不过是上帝借你一用的资本!


页首
 用户资料  
 
9 楼 
 文章标题 : Re: 简单shell问题
帖子发表于 : 2009-10-27 18:14 

注册: 2006-11-08 16:33
帖子: 286
送出感谢: 0 次
接收感谢: 0 次
wangjun403 写道:
没注意看,改成“==”确实可以,但是我想知道用“-eq“的情况下,那里错了


"Bob"是字符?-eq是算术二元运算符?


页首
 用户资料  
 
10 楼 
 文章标题 : Re: 简单shell问题
帖子发表于 : 2009-10-28 8:52 

注册: 2008-11-01 21:42
帖子: 1028
地址: 树下板凳
送出感谢: 0 次
接收感谢: 1
比较运算符下面3种,用在test(或 [ ])表达式中

文件比较: -e -d -r -w -x -f -L -nt -ot
字符串比较: -z -n = !=
算术比较:-eq -le -ne -gt -lt -ge (后面如果是字符串,提示 需要算术表达式!)

跟是不是二元运算符没关系,关键是类型要匹配,"Bob"是字符?你这么写肯定是字符串了 ,变量引用要用$
==和=严格说来不一样 ,(( ))中可以用c中的运算符(注意表示真假的值和c中相反,0真,1假), < <= > >= == 如计算 echo ((3+4)) 比较 ((3>=4));echo $?
注意看错误提示,shell错误比c中错误定位直观多了


_________________
民族的脊梁,是踏实做事的人,非只知道骂街的泼妇。


页首
 用户资料  
 
11 楼 
 文章标题 : Re: 简单shell问题
帖子发表于 : 2009-10-29 12:58 
头像

注册: 2009-10-13 12:58
帖子: 11
送出感谢: 0 次
接收感谢: 0 次
数字和字符的比较表达式,弄混了,
编程、写代码是一个,需要实践的东西,
要多多练习啊。。


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

当前时区为 UTC + 8 小时


在线用户

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


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

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

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