如何查看文件是否在shell bash脚本中有后缀

这个问题在这里已经有了答案:

  • 字符串在Bash中包含20个答案

  • 您可以使用匹配的运算符:

    $ if [[ "abc.def" =~ . ]]; then echo "yes"; else echo "no"; fi
    yes
    
    $ if [[ "abcdef" =~ . ]]; then echo "yes"; else echo "no"; fi
    no
    

    如果点是字符串中的第一个或最后(或唯一)字符,则匹配。 如果您希望点的两边都有字符,则可以执行以下操作:

    $ if [[ "ab.cdef" =~ ... ]]; then echo "yes"; else echo "no"; fi
    yes
    
    $ if [[ ".abcdef" =~ ... ]]; then echo "yes"; else echo "no"; fi
    no
    
    $ if [[ "abcdef." =~ ... ]]; then echo "yes"; else echo "no"; fi
    no
    

    你也可以使用模式匹配:

    $ if [[ "ab.cdef" == *?.?* ]]; then echo "yes"; else echo "no"; fi
    yes
    
    $ if [[ ".abcdef" == *?.?* ]]; then echo "yes"; else echo "no"; fi
    no
    
    $ if [[ "abcdef." == *?.?* ]]; then echo "yes"; else echo "no"; fi
    no
    

    格雷格的维基对格式和正则表达式都有很好的参考


    bash支持glob风格的模式匹配:

    if [[ "$file" = *?.?* ]]; then
       ...
    fi
    

    请注意,这也假设一个前缀 - 这也确保它不会匹配...目录。

    如果你想检查一个特定的扩展名:

    if [[ "$file" = *?.foo ]]; then
       ...
    fi
    

    echo "xxx.yyy" | grep -q '.'
    if [ $? = 0 ] ; then
        # do stuff
    fi
    

    要么

    echo "xxx.yyy" | grep -q '.' && <one statement here>
    #e.g.
    echo "xxx.yyy" | grep -q '.' && echo "got a dot"
    
    链接地址: http://www.djcxy.com/p/36189.html

    上一篇: how to use if to see whether file has suffix in shell bash script

    下一篇: How to run a shell script on a Unix console or Mac terminal?