sh/bash/dash/ksh/zsh等Shell脚本
-
wangjun403
- 帖子: 433
- 注册时间: 2009-07-06 14:26
#1
帖子
由 wangjun403 » 2009-10-27 16:00
代码: 全选
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
请问那里错了?
生命只不过是上帝借你一用的资本!
-
冲浪板
- 论坛版主
- 帖子: 7513
- 注册时间: 2007-05-06 8:19
#2
帖子
由 冲浪板 » 2009-10-27 16:02
不是
if [ $1 -eq "bob" && $2 -eq "555" ]
么?
-
wangjun403
- 帖子: 433
- 注册时间: 2009-07-06 14:26
#3
帖子
由 wangjun403 » 2009-10-27 16:02
代码: 全选
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
感觉同样的错误,但我找不出来
生命只不过是上帝借你一用的资本!
-
wangjun403
- 帖子: 433
- 注册时间: 2009-07-06 14:26
#4
帖子
由 wangjun403 » 2009-10-27 16:03
冲浪板 写了:不是
if [ $1 -eq "bob" && $2 -eq "555" ]
么?
书上就是我那样写的,我试下你的看看
还是不行,一样的提示
生命只不过是上帝借你一用的资本!
-
yjcong
- 帖子: 2470
- 注册时间: 2006-02-28 3:11
#5
帖子
由 yjcong » 2009-10-27 16:10
#!/bin/bash
function verify
{
if [ $1 = "bob" ]&&[ $2 = "555" ];
then
echo "verify ok"
else
echo "rejected"
fi
}
verify bob 555
一梦三年,
松风依旧,
萝月何曾老.
灵幽听微, 谁观玉颜?
灼灼春华, 绿叶含丹.
-
wangjun403
- 帖子: 433
- 注册时间: 2009-07-06 14:26
#6
帖子
由 wangjun403 » 2009-10-27 16:19
请问楼上,你写的这个和我的那个有什么区别?多了个“;”?
但加上这个后还是不行
生命只不过是上帝借你一用的资本!
-
冲浪板
- 论坛版主
- 帖子: 7513
- 注册时间: 2007-05-06 8:19
#7
帖子
由 冲浪板 » 2009-10-27 16:25
wangjun403 写了:冲浪板 写了:不是
if [ $1 -eq "bob" && $2 -eq "555" ]
么?
书上就是我那样写的,我试下你的看看
还是不行,一样的提示
不一样的提示;
用“==”代替“-eq”
-
wangjun403
- 帖子: 433
- 注册时间: 2009-07-06 14:26
#8
帖子
由 wangjun403 » 2009-10-27 16:32
没注意看,改成“==”确实可以,但是我想知道用“-eq“的情况下,那里错了
生命只不过是上帝借你一用的资本!
-
changys04
- 帖子: 286
- 注册时间: 2006-11-08 16:33
#9
帖子
由 changys04 » 2009-10-27 18:14
wangjun403 写了:没注意看,改成“==”确实可以,但是我想知道用“-eq“的情况下,那里错了
"Bob"是字符?-eq是算术二元运算符?
-
t3swing
- 帖子: 1028
- 注册时间: 2008-11-01 21:42
- 来自: 树下板凳
#10
帖子
由 t3swing » 2009-10-28 8:52
比较运算符下面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中错误定位直观多了
民族的脊梁,是踏实做事的人,非只知道骂街的泼妇。
-
t1e2s3t4
- 帖子: 11
- 注册时间: 2009-10-13 12:58
#11
帖子
由 t1e2s3t4 » 2009-10-29 12:58
数字和字符的比较表达式,弄混了,
编程、写代码是一个,需要实践的东西,
要多多练习啊。。