shell if判断 [ ]和[[ ]]的区别

if判断

[  ]            如果存在

[ -e  ]         如果存在,不管是什么类型的文件,e=exist

[ -n  ]        非空字符串  n=non-zero

[ -z  ]            如果长度为0  z=zero

[ -r  ]            如果存在且可读

[ -s  ]            存在且大小不为0

[ -S  ]            存在且是套接字

[ -t FD ]         如果文件描述符 FD 打开且指向一个终端则为真。

if [ X"${var}" = X"test"]    如果var变量的值等于test, X的含义是,防止var变量为空时的语法错误。

if [[ "${HOSTNAME}" =~ "yarn-nm" ]]      =~是正则表达式的操作符号,如果HOSTNAME变量是yarn-nm

https://blog.csdn.net/suofeng1234/article/details/51777842

 

[ ]和[[ ]]的区别

[ ] 等同于 test命令

-z (zero) 为空是返回真(0)

-n(nozero)    非空时返回真

 

1、当使用 -z 或 -n 判断变量是否为空时, 

[ ] 需要给变量加上双引号,[[ ]] 则不用加双引号

 

2、[[ ]] ,不能用 -a 和 -o 对多个条件进行连接,[ ] 可以,但是必须在[]内部

[],可以使用&&和|| 对多个条件进行连接,但是必须在[]外部,而[[ ]]没有这个限制。

 

3、使用=~ 匹配正则表达式时,只能使用[[ ]]。

 

 

 

你可能感兴趣的:(shell)