当前时区为 UTC + 8 小时



发表新帖 回复这个主题  [ 16 篇帖子 ]  前往页数 1, 2  下一页
作者 内容
1 楼 
 文章标题 : 高手看过来
帖子发表于 : 2006-11-22 15:47 

注册: 2006-10-25 20:42
帖子: 10
送出感谢: 0 次
接收感谢: 0 次
#!/bin/bash
if [ $1="yes" ] ; then
clear
echo $1
echo "Telephone Directory"
echo " "
echo "1.Find Listing:"
echo "2.Add Listing"
echo "3.Modify Listing"
echo "4.Print Listing"
echo "Q.quit"
echo " "
read selection
case $selection in
"1")
findlisting
;;
"2")
addlisting
;;
"3")
modifylisting
;;
"4")
printlisting
;;
"Q")
exit 0
esac
else
echo "wrong choice"
fi
****************************************************
为什么,第二行参数判断不起作用?
不管有没有参数,shell都能运行?


页首
 用户资料  
 
2 楼 
 文章标题 :
帖子发表于 : 2006-11-22 19:33 

注册: 2006-07-09 12:22
帖子: 1331
地址: 南京
送出感谢: 0 次
接收感谢: 1
if [ $1 = "yes" ] ; then
空格:包括"[ ]"前后以及"="前后。。。


最后由 aBiNg 编辑于 2006-11-23 9:44,总共编辑了 1 次

页首
 用户资料  
 
3 楼 
 文章标题 :
帖子发表于 : 2006-11-22 21:44 

注册: 2006-10-25 20:42
帖子: 10
送出感谢: 0 次
接收感谢: 0 次
二楼的大虾:你好。
我确定[]前后都有空格,只是在帖子上看起来不太明显。


页首
 用户资料  
 
4 楼 
 文章标题 :
帖子发表于 : 2006-11-23 16:54 

注册: 2006-02-28 15:44
帖子: 80
送出感谢: 0 次
接收感谢: 0 次
我觉得是楼主的程序逻辑有问题。


页首
 用户资料  
 
5 楼 
 文章标题 :
帖子发表于 : 2007-05-06 22:52 

注册: 2006-02-07 15:05
帖子: 26
送出感谢: 0 次
接收感谢: 0 次
我试了一下,=前后要加空格,可以运行。无参数刚出错。


_________________
激水之疾,至于漂石者,势也;鸷鸟之疾,至于毁折者,节也。故善战者,其势险,其节短。


页首
 用户资料  
 
6 楼 
 文章标题 :
帖子发表于 : 2007-05-06 23:29 
头像

注册: 2006-07-14 18:56
帖子: 345
地址: Apple Valley, Planet Tux, Linux System
送出感谢: 0 次
接收感谢: 0 次
if [ $1="yes" ]; then 等价于 if [ "$1=yes" ]; then


页首
 用户资料  
 
7 楼 
 文章标题 :
帖子发表于 : 2007-05-07 13:41 
头像

注册: 2006-05-03 0:39
帖子: 8273
地址: المريخ
送出感谢: 0 次
接收感谢: 1
:shock:


_________________
PHP是最好的语言!不服来战!


页首
 用户资料  
 
8 楼 
 文章标题 :
帖子发表于 : 2007-05-08 16:02 

注册: 2006-09-07 22:51
帖子: 849
送出感谢: 0 次
接收感谢: 0 次
if [ $1 == "yes" ] 建议这样写 if [ "x$1" == "xyes" ]
没有参数就不会报错了
检验是否有参数可以
if [ "x$1" == "x" ];then
echo "no arguements"
exit 1
else
echo "haha $@"
fi


页首
 用户资料  
 
9 楼 
 文章标题 :
帖子发表于 : 2007-05-08 23:27 
头像

注册: 2006-07-14 18:56
帖子: 345
地址: Apple Valley, Planet Tux, Linux System
送出感谢: 0 次
接收感谢: 0 次
wkt 写道:
if [ $1 == "yes" ] 建议这样写 if [ "x$1" == "xyes" ]
没有参数就不会报错了
检验是否有参数可以
if [ "x$1" == "x" ];then
echo "no arguements"
exit 1
else
echo "haha $@"
fi


看到过这种写法,但一直不明白为什么要加那个x。这样写也不会报错啊:
代码:
if [ "$1" == "yes" ]


页首
 用户资料  
 
10 楼 
 文章标题 :
帖子发表于 : 2007-05-09 9:17 

注册: 2006-09-07 22:51
帖子: 849
送出感谢: 0 次
接收感谢: 0 次
5451vs5451 写道:
wkt 写道:
if [ $1 == "yes" ] 建议这样写 if [ "x$1" == "xyes" ]
没有参数就不会报错了
检验是否有参数可以
if [ "x$1" == "x" ];then
echo "no arguements"
exit 1
else
echo "haha $@"
fi


看到过这种写法,但一直不明白为什么要加那个x。这样写也不会报错啊:
代码:
if [ "$1" == "yes" ]

用bash 不会
但是sh会
代码:
wkt@ubuntu:~
-0-$ cat /tmp/bash
if [ "$1" == "yes" ];then
echo "hhh"
fi
wkt@ubuntu:~
-0-$ sh /tmp/bash
[: 3: ==: unexpected operator
wkt@ubuntu:~
-0-$ bash /tmp/bash
wkt@ubuntu:~
-0-$


页首
 用户资料  
 
11 楼 
 文章标题 :
帖子发表于 : 2007-05-09 9:17 

注册: 2006-09-07 22:51
帖子: 849
送出感谢: 0 次
接收感谢: 0 次
5451vs5451 写道:
wkt 写道:
if [ $1 == "yes" ] 建议这样写 if [ "x$1" == "xyes" ]
没有参数就不会报错了
检验是否有参数可以
if [ "x$1" == "x" ];then
echo "no arguements"
exit 1
else
echo "haha $@"
fi


看到过这种写法,但一直不明白为什么要加那个x。这样写也不会报错啊:
代码:
if [ "$1" == "yes" ]

用bash 不会
但是sh会
代码:
wkt@ubuntu:~
-0-$ cat /tmp/bash
if [ "$1" == "yes" ];then
echo "hhh"
fi
wkt@ubuntu:~
-0-$ sh /tmp/bash
[: 3: ==: unexpected operator
wkt@ubuntu:~
-0-$ bash /tmp/bash
wkt@ubuntu:~
-0-$


页首
 用户资料  
 
12 楼 
 文章标题 :
帖子发表于 : 2007-05-09 9:18 

注册: 2006-09-07 22:51
帖子: 849
送出感谢: 0 次
接收感谢: 0 次
5451vs5451 写道:
wkt 写道:
if [ $1 == "yes" ] 建议这样写 if [ "x$1" == "xyes" ]
没有参数就不会报错了
检验是否有参数可以
if [ "x$1" == "x" ];then
echo "no arguements"
exit 1
else
echo "haha $@"
fi


看到过这种写法,但一直不明白为什么要加那个x。这样写也不会报错啊:
代码:
if [ "$1" == "yes" ]

用bash 不会
但是sh会
代码:
wkt@ubuntu:~
-0-$ cat /tmp/bash
if [ "$1" == "yes" ];then
echo "hhh"
fi
wkt@ubuntu:~
-0-$ sh /tmp/bash
[: 3: ==: unexpected operator
wkt@ubuntu:~
-0-$ bash /tmp/bash
wkt@ubuntu:~
-0-$


页首
 用户资料  
 
13 楼 
 文章标题 :
帖子发表于 : 2007-05-10 23:44 

注册: 2006-10-20 12:35
帖子: 27
送出感谢: 0 次
接收感谢: 0 次
$1后少了空格


页首
 用户资料  
 
14 楼 
 文章标题 :
帖子发表于 : 2007-05-12 9:00 

注册: 2007-03-01 15:22
帖子: 22
地址: 广州
送出感谢: 0 次
接收感谢: 0 次
也可以使用双圆括号结构
if (( $1 == "yes" ))


页首
 用户资料  
 
15 楼 
 文章标题 :
帖子发表于 : 2007-05-12 19:12 
头像

注册: 2006-07-14 18:56
帖子: 345
地址: Apple Valley, Planet Tux, Linux System
送出感谢: 0 次
接收感谢: 0 次
Robinho 写道:
也可以使用双圆括号结构
if (( $1 == "yes" ))


这么写是不对的,请看下面的例子:
代码:
$  a=no; if (( a == "no" )); then echo yes; else echo no; fi
yes
$  a=no; if (( a == "yes" )); then echo yes; else echo no; fi
yes
$  a=no; if (( a == 0 )); then echo yes; else echo no; fi
yes
$  a=no; if (( a == 1 )); then echo yes; else echo no; fi
no


页首
 用户资料  
 
显示帖子 :  排序  
发表新帖 回复这个主题  [ 16 篇帖子 ]  前往页数 1, 2  下一页

当前时区为 UTC + 8 小时


在线用户

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


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

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

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