我正在按照bash手册和regex指南来编写脚本,但它不起作用。脚本始终接受所有字符串或数字,并且不遵循格式。
这是一个有效的输入:feat:RQ01_HelloWorld。
泰
#!/usr/bin/env bash --posix
MSG="$1"
FEAT=/feat:[[:space:]]RQ[[:digit:]]+_[[:alpha:]]+/
if [[ $MSG=~$FEAT ]]
then
echo "yeah"
else
echo "is wrong"
exit 1
fi
最佳答案
有两个问题:
1)与Perl或awk中的正则表达式作为匹配操作的一部分包含在/.../
中不同,bash
不这样使用它们。/
被认为是正则表达式本身的一部分。
2)需要在=~
运算符周围使用空格,以便[[
看到3个不同的参数,而不是[[
认为是真的单个非空字符串。
FEAT="feat:[[:space:]]RQ[[:digit:]]+_[[:alpha:]]+"
if [[ $MSG =~ $FEAT ]]