我正在尝试编写一个包含函数的 bash 脚本,因此当给定一个.tar,等文件时.tar.bz2,.tar.gz它使用 tar 和相关开关来解压缩文件。
.tar
.tar.bz2
.tar.gz
我正在使用 if elif then 语句来测试文件名以查看它以什么结尾,并且我无法使用正则表达式元字符来匹配它。
为了避免不断重写我在命令行中使用“测试”的脚本,我认为下面的语句应该有效,我已经尝试了括号、引号和元字符的所有组合,但仍然失败。
test sed-4.2.2.tar.bz2 = tar\.bz2$; echo $? (this returns 1, false)
我确信这个问题很简单,我到处都看过,但我不知道该怎么做。有人知道我该怎么做吗?
要匹配正则表达式,您需要使用=~运算符。
=~
尝试这个:
[[ sed-4.2.2.tar.bz2 =~ tar.bz2$ ]] && echo matched
或者,您可以在运算符中使用通配符(而不是正则表达式)==:
==
[[ sed-4.2.2.tar.bz2 == *tar.bz2 ]] && echo matched
如果可移植性不是问题,我建议使用[[代替[或test,因为它更安全、更强大。
[[
[
test