Shell里面“[”和“[[”有什么区别?

2020-07-05  本文已影响0人  aneirin

Shell里面的“[[”是对“[”的一种增强,主要有以下几个方面的增强:
1,在“[[”中不再需要引用变量,比如在“[”中你要这样写:

if [ -f "$file" ]

而在“[[”中双引号就可以省略掉了

if [[ -f $file ]]

2,因为“[[”是一种bash的一种语法特色,所以它支持&&和||,下面的例子用“[[”是没有问题的,

#!/bin/bash
file1="/tmp/test.sh"
file2="/tmp/test1.sh"
if [[ -f "$file1" && -f "$file2" ]];then
    echo "true"
else
    echo "false"
fi

但是换成“[”就会报如下错误,

./test.sh: line 4: [: missing `]'
false

3,“[[”支持惊艳的“=~”操作符,使用“[”你只能这样写

if [ "$answer" = y -o "$answer" = yes ]

但使用“[[”则可以这样写,

if [[ $answer =~ ^y(es)?$ ]]

4,“[[”支持globbing,可以这样写,

if [[ $OPTION = y* ]]

最后,记得“[[”是bash的语法,其他shell要严格使用“[”

上一篇下一篇

猜你喜欢

热点阅读