shell中[ ]和[[ ]]命令的区别

Posted buddy916

tags:

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

1.在[[ ]]中不会进行word splitting和filename expansion,而在[ ]中会进行,当变量a为空时,[ -n $a ]和[ -z $a ]都会返回0,这不是我们期望的结果,原因在于进行参数展开($a)后,会进行word splitting,而a为空,word splitting会移除空值,所以[ -n $a ]和[ -z $a ]实际是执行[ -n ]和[ -z ],而[ ]中仅一个参数时且非空都是返回0的,所以 使用[ ]进行条件判断时,最好加上引号

[email protected]:~$ a="1 2"
[email protected]-PC:~$ [ -n $a ]
bash: [: 1: 需要二元表达式
[email protected]-PC:~$ [[ -n $a ]]
[email protected]-PC:~$ [ -n "$a" ]
[email protected]-PC:~$ a=
[email protected]-PC:~$ 
[email protected]-PC:~$ [ -n $a ]
[email protected]-PC:~$ echo $?
0
[email protected]-PC:~$ [ -z $a ]
[email protected]-PC:~$ echo $?
0
[email protected]-PC:~$ [[ -n $a ]]
[email protected]-PC:~$ echo $?
1
[email protected]-PC:~$ [[ -z $a ]]
[email protected]-PC:~$ echo $?
0
[email protected]-PC:~$ 

  [email protected]:~$ [[ -n ]]
  bash: 一元条件运算符使用了未预期的参数 `]]‘
  bash: `]]‘ 附近有语法错误
  [email protected]:~$ [ -n ]
  [email protected]:~$

 

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

shell命令行和在DOS窗口中输入命令有啥区别吗

shell选取部分内容

代码片段:Shell脚本实现重复执行和多进程

shell中[ ]和[[ ]]命令的区别

linux命令和shell命令有啥区别啊?

shell脚本中-和--有啥区别呢?