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要严格使用“[”