Bash 字符串与正则表达式的比较不起作用

Bash String Comparison With Regex Not Working

我正在尝试在 zsh 中进行简单的字符串比较,其中一个参数是 sed 调用的结果。

但我一直收到“zsh:缺少字符串结尾

[ (sed -En s/'(^.+)-SNAPSHOT'/''/p ./app_version.txt) = "1.20.11" ]

app_version.txt 文件包含 Maven 版本。 sed 正在剥离“SNAPSHOT”。 app_version.txt

1.20.11-SNAPSHOT

因为你的sed的输出需要加双引号。试试这个:

[ "$(sed -En s/'(^.+)-SNAPSHOT'/''/p ./app_version.txt)" = "1.20.11" ]

在您的情况下,您甚至不需要正则表达式。你可以用

 if [[ $(<app_version.txt) == 1.20.11-SNAPSHOT ]]

或者,如果您想将 SNAPSHOT 部分设为可选,例如

 if [[ $(<app_version.txt) == 1.20.11-* ]]