gpt4 book ai didi

regex - 如何在 Bash 中将字符串与正则表达式匹配?

转载 作者:行者123 更新时间:2023-11-29 08:38:18 26 4
gpt4 key购买 nike

我正在尝试编写一个包含函数的 bash 脚本,因此当给定一个 .tar.tar.bz2.tar.gz 等文件,它使用带有相关开关的 tar 来解压缩文件。

我正在使用 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,因为它更安全、更强大。参见 What is the difference between test, [ and [[ ?了解详情。

关于regex - 如何在 Bash 中将字符串与正则表达式匹配?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17420994/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com