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-* ]]
我正在尝试在 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-* ]]