与Bash中的单个方括号[]相比,双方括号[[]是否更合适?

问题描述 投票:495回答:8

[一位同事最近在代码审查中声称,在类似[]的结构中,[[ ]]的结构优于[ ]的结构>

if [ "`id -nu`" = "$someuser" ] ; then 
     echo "I love you madly, $someuser"
fi

他无法提供理由。有没有?

[一位同事最近在代码审查中声称,在if [“ id -nu` =” $ someuser“]之类的结构中,[[]]构造优于[]。然后回显“我疯狂地爱你,$ someuser” ...

bash if-statement syntax
8个回答
548
投票

[[具有更少的惊喜,并且通常更安全使用。但是它不是可移植的-POSIX没有指定它的功能,只有一些shell支持它(除了bash,我听说ksh也支持它)。例如,您可以执行


100
投票

行为差异


55
投票

[具有更多功能-我建议您看看[ a = a ] || [ a = b ] && [ a = b ]了解更多信息,特别是[[ ]]中的[[Advanced Bash Scripting Guide


11
投票
Chapter 7. Tests[[ ]]

2
投票
在无法使用[[的典型情况下,在autotools configure.ac脚本中,括号具有特殊的含义,因此必须使用Which comparator, test, bracket, or double bracket, is fastest?而不是[或[[-注意test和[是同一程序。

2
投票
如果您关注以下http://bashcurescancer.com

-1
投票
[[]]双括号在某些版本的SunOS中不支持,而在内部函数声明中完全不支持:GNU bash,版本2.02.0(1)-发行版(sparc-sun-solaris2.6)

-2
投票
简而言之,[[更好,因为它不会派生其他进程。没有方括号或单方括号比双方括号要慢,因为它分叉了另一个进程。
© www.soinside.com 2019 - 2024. All rights reserved.