<分区>
如果[xxx]
如何表达字符串或文件包含'.'
初学shell,感谢大家的帮助
<分区>
如果[xxx]
如何表达字符串或文件包含'.'
初学shell,感谢大家的帮助
最佳答案
您可以使用匹配运算符:
$ 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
关于模式和正则表达式的一个很好的引用是在 Greg's Wiki
关于linux - 如何在shell bash脚本中使用if查看文件是否有后缀,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11338410/