Chinaunix

标题: 字符串比较的两个方式有区别吗? [打印本页]

作者: Kill_Hand    时间: 2009-10-20 17:13
标题: 字符串比较的两个方式有区别吗?
[ "$var" != "" ] 和 [ "X$var" != "X" ]

两个效果一样吗? 一样的话为什么要多写个X ?
作者: blackold    时间: 2009-10-20 17:18
标题: 回复 #1 Kill_Hand 的帖子
一样吧。
同一程序里面有这两种写法?
作者: liaosnet    时间: 2009-10-20 17:21
防出错~
作者: ly5066113    时间: 2009-10-20 17:23
标题: 回复 #1 Kill_Hand 的帖子
这要看你使用的shell及其版本了。

[ "X$var" != "X" ] 这个是通用的,在任何版本的shell里应该都不会有问题。
[ "$var" != "" ] 这个在一些低版本的shell中,如果var是空值或未定义,那么会抱错的。
作者: ghostgorst    时间: 2009-10-20 17:24
应该是不加引号时候有区别吧?不加引号后面那种不会出错

[ $var != "" ] 和 [ X$var != "X" ]

[ 本帖最后由 ghostgorst 于 2009-10-20 17:25 编辑 ]
作者: blackold    时间: 2009-10-20 17:26
标题: 回复 #3 liaosnet 的帖子
什么情况下会出错?
作者: Kill_Hand    时间: 2009-10-20 17:28
标题: 回复 #2 blackold 的帖子
不在同一个脚本里。

多谢各位了,了解了。
作者: blackold    时间: 2009-10-20 17:32
标题: 回复 #4 ly5066113 的帖子
嗯。可能,还没碰到出错的情况。
作者: blackold    时间: 2009-10-20 17:33
标题: 回复 #5 ghostgorst 的帖子
有理。
常见的是这种“防空”写法。
作者: ly5066113    时间: 2009-10-20 17:34
标题: 回复 #8 blackold 的帖子
出错大多都是在Unix下。
作者: blackold    时间: 2009-10-20 17:37
标题: 回复 #10 ly5066113 的帖子
学习!
使用UNIX已经是很久以前的事了,只用过几天。
作者: Kill_Hand    时间: 2009-10-20 17:59
标题: 回复 #11 blackold 的帖子
我一天都没用过,唉。全是linux
作者: ghostgorst    时间: 2009-10-21 08:23
标题: 回复 #12 Kill_Hand 的帖子
linux都用来干吗呢?
作者: lucash    时间: 2009-10-21 08:33
前几天碰到过,就在我的centos5.3上。用加那个X会报错




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2