在Bash中,双方括号[[]]比单方括号[]更可取吗? [英] Are double square brackets [[ ]] preferable over single square brackets [ ] in Bash?

查看:38
本文介绍了在Bash中,双方括号[[]]比单方括号[]更可取吗?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

一位同事最近在一次代码审查中声称,在

这样的结构中,[[ ]]结构比[ ]结构更优先
if [ "`id -nu`" = "$someuser" ] ; then
     echo "I love you madly, $someuser"
fi

他无法提供理由。有吗?

推荐答案

[[出人意料的较少,通常使用起来更安全。但是它不是可移植的-POSIX没有指定它做什么,并且只有一些shell支持它(除了bash,我听说ksh也支持它)。例如,您可以

[[ -e $b ]]

测试文件是否存在。但是对于[,您必须引用$b,因为它拆分了参数并扩展了类似"a*"的内容(其中[[按字面意思理解)。这还与[如何成为外部程序以及如何像其他所有程序一样正常接收其参数有关(虽然它也可以是内置程序,但它仍然没有这种特殊处理)。

[[还有其他一些不错的特性,比如与=~匹配的正则表达式以及类似于C语言的运算符。这里有一个很好的页面:What is the difference between test, <[200-3]> and <[200-2]> ?Bash Tests

这篇关于在Bash中,双方括号[[]]比单方括号[]更可取吗?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆