shell [ ] 与 [[ ]] 区别

Posted lyy3306

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了shell [ ] 与 [[ ]] 区别相关的知识,希望对你有一定的参考价值。

[ ] 与[[ ]] 均可以判断变量是否为空, [ $a ] [[ $a ]]  [ ! $a ] [[ ! $a ]] 无区别

 在Linux中,我们可以使用test命令判断一个字符串是否为空,test命令为我们提供了"-z选项"与"-n选项",使用这两个选项可以判断字符串是否为空。

"-z选项"可以判断指定的字符串是否为空,为空则返回真,非空则返回假,-z可以理解为zero

"-n选项"可以判断指定的字符串是否为空,非空则返回真,为空则返回假,-n可以理解为nozero
 

test 中使用"-n"或者"-z"这些选项判断变量是否为空时,必须在变量的外侧加上双引号。而 [ ] 与 tets 效果相同,而在[[ ]] 并不用在变量上加 双引号。

 使用test -n 命令判断变量b的值是否为空时,应该返回假,因为test命令的-n选项表示指定的字符串非空时,返回真,为空时, 返回假,但是上例中,\'test -n $b\' 这条命令的返回值却为真(应该为假),这是明显不正确的

 

 在使用"[[  ]]"时,不能使用"-a"或者"-o"对多个条件进行连接。

在使用"[  ]"时,如果使用"-a"或者"-o"对多个条件进行连接,"-a"或者"-o"必须被包含在"[ ]"之内。

在使用"[  ]"时,如果使用"&&"或者"||"对多个条件进行连接,"&&"或者"||"必须在"[ ]"之外。

 

以上是关于shell [ ] 与 [[ ]] 区别的主要内容,如果未能解决你的问题,请参考以下文章

c shell 和bash有啥区别

shell``和$()作用与区别

shell [ ] 与 [[ ]] 区别

Bash shell中bashshsource及“.”的区别与联系

[转] - bashrc与profile的区别

Linux-SHELL中sh和bash的区别