如何根据grep正则表达式使bash脚本失败?

时间:2016-09-29 10:36:07

标签: bash grep

我有以下bash脚本。

我试图解决的问题非常简单。当Git no中的提交以gh-1234 ...开头时,它应该失败。

这个bash脚本有什么问题?

commit_regex='(gh-[0-9]+|merge)'

error_msg="Aborting commit. Your commit message is missing either a Github Issue ('gh-1111') or 'Merge'."

if ! grep -q "$commit_regex" <<< "$1"; then
    echo "$error_msg" >&2
    exit 1
fi

2 个答案:

答案 0 :(得分:1)

如评论中所述,您需要执行grep -E "$commit_regex"

来自man grep页面 -

  

-E, - 扩展 -   将PATTERN解释为扩展正则表达式(ERE,见下文)。 (-E由POSIX指定。)

这应该可以解决您的问题,因为它会强制grep扩展变量。

答案 1 :(得分:0)

另一种在没有grep的情况下实现相同的方法:

if [[ $git_message=~ $commit_regex ]] 
then
    echo "$error_msg"
    exit 1;
fi

另外:如果要求提交“gh-1234”作为邮件的开头,则应在正则表达式中添加^