分页: 1 / 1

刚才初学IF then 语句。有个颖问

发表于 : 2008-11-18 22:54
东北胖子
在 [ ] 里,为什么 变量要和[]有一个空格
比如: [ "$A"= "A" ] 为了体现有空间我就多空了几个。

如果 这样写就错误
["$A" ="A"]


我说的对吗?我今天才开现的。一开始有错误 我怎么也找不到。后来也不知道怎么就弄好了。

Re: 刚才初学IF then 语句。有个颖问

发表于 : 2008-11-18 23:24
HuntXu
规则...

Re: 刚才初学IF then 语句。有个颖问

发表于 : 2008-11-18 23:44
xhy

代码: 全选

if [ "$a" = "$b" ]
不仅[和"$a"之间要有空格,"$a"和 = 之间也要有空格。

第一个空格是为了区分命令和参数,[是一个builtin,它是test程序的同义词,只不过[命令的最后一个参数必须是],

可以看成

代码: 全选

if test "$a" = "$b"
,而如果test跟"$a"连在一起, test"$a"就会被解释成一个字符串数值,

效果是test后面拼接上$a,这样就跟把$a当做参数传递给test的初衷不符合了。所以这里必须有空格。等号的道理也一样,

如果等号的两边没有空格,等号就作为一个字符拼接到前一个或者后一个参数了。

最后那个]之前如果没有空格,那么]将会被拼接到"$b"之后,作为一个字符串对待,而[命令的最后一个参数必须是],

所以必须在空格之后有一个]来作为参数。



仅仅是我个人理解,未必有道理。