[]和[[]] 区别
-
- 帖子: 108
- 注册时间: 2010-12-18 19:46
[]和[[]] 区别
1.
#!/bin/bash
if [[ ! -d test1 ]]
then
mkdir test1
fi
2.
#!/bin/bash
if [ ! -d test1 ]
then
mkdir test1
fi
今天在网上看到一脚本,里面的if语句后面的判断 用了两个中括号, 不明白为什么?? 因为用一个也可以,所以有疑问。
#!/bin/bash
if [[ ! -d test1 ]]
then
mkdir test1
fi
2.
#!/bin/bash
if [ ! -d test1 ]
then
mkdir test1
fi
今天在网上看到一脚本,里面的if语句后面的判断 用了两个中括号, 不明白为什么?? 因为用一个也可以,所以有疑问。
keep the faith
- 枫叶饭团
- 帖子: 14683
- 注册时间: 2010-06-16 1:05
- 系统: Mac OS X
- 来自: Tencent
- 联系:
Re: []和[[]] 区别
好像遇见过[]报错而必需用[[]]的例子,想不起也不知道 

-
- 帖子: 6548
- 注册时间: 2008-10-31 22:12
- 系统: 践兔
- 联系:
Re: []和[[]] 区别
[[是关键字。[是内部命令。差不多。就是用[[方便点。[可移植性高点。bellszhu 写了:1.
#!/bin/bash
if [[ ! -d test1 ]]
then
mkdir test1
fi
2.
#!/bin/bash
if [ ! -d test1 ]
then
mkdir test1
fi
今天在网上看到一脚本,里面的if语句后面的判断 用了两个中括号, 不明白为什么?? 因为用一个也可以,所以有疑问。
为了避免犯错建议还是用[[
代码: 全选
] ls -ld //
- 枫叶饭团
- 帖子: 14683
- 注册时间: 2010-06-16 1:05
- 系统: Mac OS X
- 来自: Tencent
- 联系:
Re: []和[[]] 区别
学习了tusooa 写了:[[是关键字。[是内部命令。差不多。就是用[[方便点。[可移植性高点。bellszhu 写了:1.
今天在网上看到一脚本,里面的if语句后面的判断 用了两个中括号, 不明白为什么?? 因为用一个也可以,所以有疑问。
为了避免犯错建议还是用[[


-
- 帖子: 6548
- 注册时间: 2008-10-31 22:12
- 系统: 践兔
- 联系:
- josephyoung
- 帖子: 158
- 注册时间: 2011-11-05 18:53
- 来自: 南极圈
- Think1st
- 帖子: 45
- 注册时间: 2012-02-07 23:08
Re: []和[[]] 区别
bellszhu 写了:1.
#!/bin/bash
if [[ ! -d test1 ]]
then
mkdir test1
fi
2.
#!/bin/bash
if [ ! -d test1 ]
then
mkdir test1
fi
今天在网上看到一脚本,里面的if语句后面的判断 用了两个中括号, 不明白为什么?? 因为用一个也可以,所以有疑问。
代码: 全选
type [
[ is a shell builtin
type [[
[[ is a shell keyword
当一个测试条件时候是等价的。
如
代码: 全选
7 if [ -z "$VAL" ]
8 then
9 echo "The val is null"
10 fi
代码: 全选
7 if [[-z "$VAL" ]]
8 then
9 echo "The val is null"
10 fi
相对于'[]','[[]]'又被称为复合命令,更加符合自然的用法。尤其是在多个测试条件的时候:'[[]]'可以直接用逻辑符号连接。
当两个测试条件时候:
代码: 全选
if [[ -z "$VAL" && "$VAL" = "" ]]
代码: 全选
if [ -z "$VAL" -a "$VAL" = "" ]
此外,在使用 = 或 != 操作符时,复合命令 [[ 还能在字符串上进行模式匹配。
代码: 全选
[ian@pinguino ~]$ [[ "abc def .d,x--" == a[abc]*\ ?d* ]]; echo $?
0
代码: 全选
[ian@pinguino ~]$ [ "abc def .d,x--" == a[abc]*\ ?d* ]; echo $?
1
详见:http://www.ibm.com/developerworks/cn/li ... -test.html
在这里,问题比答案更抢手。
- fanhe
- 帖子: 2357
- 注册时间: 2007-03-24 23:45
Re: []和[[]] 区别
所以我很讨厌 shell,支持 python!
- eexpress
- 帖子: 58428
- 注册时间: 2005-08-14 21:55
- 来自: 长沙
- fanhe
- 帖子: 2357
- 注册时间: 2007-03-24 23:45
Re: []和[[]] 区别
别记了,man builtins 吧,要么就上其他脚本eexpress 写了:我可记得[[ 支持正则的。
不知道为什么,我越来越讨厌shell 了
- Methuselar
- 帖子: 122
- 注册时间: 2009-06-04 12:06
- 联系:
- eexpress
- 帖子: 58428
- 注册时间: 2005-08-14 21:55
- 来自: 长沙
- tosail2010
- 帖子: 83
- 注册时间: 2011-03-27 19:01
- 联系: