美文网首页
Shell里面“[”和“[[”有什么区别?

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

作者: aneirin | 来源:发表于2020-07-05 13:40 被阅读0次

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

    相关文章

      网友评论

          本文标题:Shell里面“[”和“[[”有什么区别?

          本文链接:https://www.haomeiwen.com/subject/pwhvqktx.html