我需要检查“添加/更改/修复/删除”字符串是否在提交日志消息中。我正在编写一个svn precommit钩子,并且预期的提交注释应该在消息中包含这4个字符串中的一个。
我使用的代码如下
REPOS=$1
TXN=$2
SVN="/usr/bin/svn";
SVNLOOK="/usr/bin/svnlook";
$SVNLOOK log "$REPOS" -t "$TXN" | \
grep "[a-zA-Z0-9]" > /dev/null
GREP_STATUS=$?
if [ $GREP_STATUS -ne 0 ]
then
"${ECHO}" "No Log comments present" >> "${LOG}"
echo "Your commit has been blocked because you didn't give any log message" 1>&2
echo "Please write a log message describing the purpose of your changes and" 1>&2
echo "then try committing again. -- Thank you" 1>&2
exit 1
fi
在上面的代码中,
$SVNLOOK log "$REPOS" -t "$TXN"
将向我提供用户输入的提交消息。现在我必须检查消息中是否存在任何字符串“已添加,已更改,已修复,已删除”。 也就是说,
if (any of the above 4 strings are not present),
exit 1
我试过
$($SVNLOOK log -t "$TXN" "$REPOS" | grep -q "Added\|Changed\|Fixed\|Deleted"|)
但它似乎没有起作用。
答案 0 :(得分:8)
使用grep -e
选项(多次),如下所示:
grep -e Added -e Changed -e Fixed -e Deleted
否则转到正则表达式路线:
grep --regexp=Added|Changed|Fixed|Deleted
答案 1 :(得分:5)
要使用替换,您需要Extended Regexp
:
grep -qE 'Added|Changed|Fixed|Deleted'
或者:
egrep -q 'Added|Changed|Fixed|Deleted'
答案 2 :(得分:4)
删除反斜杠并使用egrep
我还建议使用-i
进行不区分大小写的匹配:
egrep -q -i "added|changed|fixed|deleted"