【发布时间】:2013-08-17 20:42:40
【问题描述】:
我的程序启动一些服务并将其输出存储在tmp 变量中,如果它以FATAL 关键字开头,我想匹配变量的内容?如果它包含我将使用echo 命令打印Port in use
例如,如果tmp 包含FATAL: Exception in startup, exiting.
我可以通过sed:echo $tmp | sed 's/^FATAL.*/"Port in use"/' 来实现
但我想使用内置的if 来匹配模式。
如何使用 shell 内置功能匹配 REGEX?
【问题讨论】:
-
stackoverflow.com/questions/12142092/…
if [[ $tmp =~ ^FATAL.* ]]; then echo "a"; else echo "b"; fi -
哪个外壳?
bash的答案将不同于csh或dash的答案,也可能来自ksh。例如,@Sithsu 的评论适用于bash;case的答案将适用于从 Bourne/POSIX shell(不是 C shell 衍生品)派生的 shell。 -
虽然这个问题更早出现,但这个问题已经收集了更多答案:stackoverflow.com/questions/21115121/…。如果您不想要
bash-isms,那就是要解决的问题。bash有自己的模式匹配工具。