我需要檢查任何字符串「Added/Changed/Fixed/Deleted」是否在提交日誌消息中。我正在編寫一個svn precommit鉤子,並且預期的提交註釋應該在消息中包含這4個字符串中的一個。grep for multiple strings in a single line
我使用的代碼如下
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"|)
,但它似乎沒有奏效。
「似乎並沒有被工作」是不是表現出的問題,一個非常有用的診斷,請提供一個最小的例子。 – Thor 2013-03-14 09:02:18