分页: 1 / 2
高手看过来
发表于 : 2006-11-22 15:47
由 yjgyjg1997
#!/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都能运行?
发表于 : 2006-11-22 19:33
由 aBiNg
if [ $1 = "yes" ] ; then
空格:包括"[ ]"前后以及"="前后。。。
发表于 : 2006-11-22 21:44
由 yjgyjg1997
二楼的大虾:你好。
我确定[]前后都有空格,只是在帖子上看起来不太明显。
发表于 : 2006-11-23 16:54
由 xdsnet
我觉得是楼主的程序逻辑有问题。
发表于 : 2007-05-06 22:52
由 iamdxlwh
我试了一下,=前后要加空格,可以运行。无参数刚出错。
发表于 : 2007-05-06 23:29
由 5451vs5451
if [ $1="yes" ]; then 等价于 if [ "$1=yes" ]; then
发表于 : 2007-05-07 13:41
由 stlxv
发表于 : 2007-05-08 16:02
由 wkt
if [ $1 == "yes" ] 建议这样写 if [ "x$1" == "xyes" ]
没有参数就不会报错了
检验是否有参数可以
if [ "x$1" == "x" ];then
echo "no arguements"
exit 1
else
echo "haha $@"
fi
发表于 : 2007-05-08 23:27
由 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" ]
发表于 : 2007-05-09 9:17
由 wkt
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-$
发表于 : 2007-05-09 9:17
由 wkt
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-$
发表于 : 2007-05-09 9:18
由 wkt
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-$
发表于 : 2007-05-10 23:44
由 csbde
$1后少了空格
发表于 : 2007-05-12 9:00
由 Robinho
也可以使用双圆括号结构
if (( $1 == "yes" ))
发表于 : 2007-05-12 19:12
由 5451vs5451
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