优秀的编程知识分享平台

网站首页 > 技术文章 正文

Shell里面[和[[有什么区别?(shell中的-s)

nanyue 2024-07-18 03:52:22 技术文章 5 ℃

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要严格使用“[”,比如sh。

Tags:

最近发表
标签列表