linux - 如何在shell bash脚本中使用if查看文件是否有后缀

标签 linux bash shell ubuntu

<分区>

如果[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/

相关文章:

linux - 未终止的 `s' 命令错误 - 试图删除多余的双引号

linux - 仅当 find 命令有结果时才 tar

linux - 如何在bash中将变量分配给同一目录中文件的不同扩展名

linux - cron 从每个系统的多个 crontab 文件中读取

linux - 再次需要帮助来改变脚本的输出

linux - AWK:将匹配模式与字段分隔符连接起来

linux - `SIGWINCH` 如何通过 Bash?

linux - 如何使用 bash 获取鼠标按下和释放位置

Bash:生成数字字母组合序列的更聪明的方法?

php - 如何使用 shell_exec php 创建 MySql 数据库?