我正在尝试创建一个git commit-msg钩子,其中包括一个用于验证日志消息的简单正则表达式。使用通常的bash语法无法正常工作。
我使用一个非常简单的正则表达式进行了尝试,但仍然无法正常工作
知道我可能在做什么错吗?
这是一个包含明显匹配项的简单示例,但它打印出“不匹配项”
#!/bin/bash
message="[GLSD-0000]"
echo "Message: '$message'"
regex="\[GLSD-\w+\]"
if [[ $message =~ $regex ]]; then echo "yes";else echo "no match!"; fi
使用git版本2.18.0.windows.1
答案 0 :(得分:3)
尝试进行操作时需要注意的几件事,
#!/bin/sh
不支持bash
中的正则表达式操作,即使您没有使用它也是如此。您应该再次使用bourne shell bash
(#!/usr/bin/env bash)
。[[..]]
的{{1}}在左侧操作数和右侧操作数之间进行字符串匹配。为了支持正则表达式,您需要使用=
运算符~
仅支持ERE(扩展正则表达式)的最低版本,其中不支持bash
(所有单词)。因此,在针对\w
shell的脚本中,您应该将其编写为
bash