正则表达式和if shell脚本

Mah*_*mam 1 regex shell ksh sed

我的程序启动一些服务并将其输出存储在tmp变量中,如果它以FATAL关键字开头,我想匹配变量的内容吗?如果它包含我将Port in use使用echo命令打印

例如,如果tmp包含FATAL: Exception in startup, exiting.

我可以通过以下方式完成sed:echo $tmp | sed 's/^FATAL.*/"Port in use"/'

但我想使用内置if来匹配模式.如何使用shell内置功能来匹配REGEX?

koj*_*iro 5

POSIX shell没有UNIX ERE或PCRE的正则表达式运算符.但它确实有case关键字:

case "$tmp" in
  FATAL*) doSomethingDrastic;;
  *) doSomethingNormal;;
esac
Run Code Online (Sandbox Code Playgroud)

你没有标记问题bash,但是如果你有这个shell,你可以做一些其他类型的模式匹配甚至是ERE:

if [[ "$tmp" = FATAL* ]]; then
    …
fi
Run Code Online (Sandbox Code Playgroud)

要么

if [[ $tmp =~ ^FATAL ]]; then
    …
fi
Run Code Online (Sandbox Code Playgroud)