how to use if to see whether file has suffix in shell bash script
本问题已经有最佳答案,请猛点这里访问。
如果[名]
如何表达感情的字符串或文件include"。"
我是新研究的壳的任何帮助,谢谢!
您可以使用匹配运算符:
1 2 3 4 5 | $ if [["abc.def" =~ \. ]]; then echo"yes"; else echo"no"; fi yes $ if [["abcdef" =~ \. ]]; then echo"yes"; else echo"no"; fi no |
如果点是字符串中的第一个或最后一个(或唯一)字符,则匹配。如果希望点的两边都有字符,可以执行以下操作:
1 2 3 4 5 6 7 8 | $ 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 |
您还可以使用模式匹配:
1 2 3 4 5 6 7 8 | $ 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 |
模式和正则表达式的一个很好的参考是Greg的wiki。
1 2 3 | if [["$file" = *?.?* ]]; then ... fi |
请注意,这也假定了一个前缀——这也确保了它不会与
如果要检查特定扩展名:
1 2 3 | if [["$file" = *?.foo ]]; then ... fi |
1 2 3 4 | echo"xxx.yyy" | grep -q '\.' if [ $? = 0 ] ; then # do stuff fi |
或
1 2 3 | echo"xxx.yyy" | grep -q '\.' && <one statement here> #e.g. echo"xxx.yyy" | grep -q '\.' && echo"got a dot" |