在 [ ] 里,为什么 变量要和[]有一个空格
比如: [ "$A"= "A" ] 为了体现有空间我就多空了几个。
如果 这样写就错误
["$A" ="A"]
我说的对吗?我今天才开现的。一开始有错误 我怎么也找不到。后来也不知道怎么就弄好了。
刚才初学IF then 语句。有个颖问
-
- 帖子: 46
- 注册时间: 2008-04-03 21:53
- HuntXu
- 帖子: 5776
- 注册时间: 2007-09-29 3:09
- xhy
- 帖子: 3916
- 注册时间: 2005-12-28 1:16
- 系统: Ubuntu 12.10 X64
- 来自: 火星
Re: 刚才初学IF then 语句。有个颖问
代码: 全选
if [ "$a" = "$b" ]
第一个空格是为了区分命令和参数,[是一个builtin,它是test程序的同义词,只不过[命令的最后一个参数必须是],
可以看成
代码: 全选
if test "$a" = "$b"
效果是test后面拼接上$a,这样就跟把$a当做参数传递给test的初衷不符合了。所以这里必须有空格。等号的道理也一样,
如果等号的两边没有空格,等号就作为一个字符拼接到前一个或者后一个参数了。
最后那个]之前如果没有空格,那么]将会被拼接到"$b"之后,作为一个字符串对待,而[命令的最后一个参数必须是],
所以必须在空格之后有一个]来作为参数。
仅仅是我个人理解,未必有道理。
目前负债150多万