Мне нужно проверить, находится ли какая-либо из строк «Добавлено/Изменена/Исправлена / Удалена» в сообщении журнала фиксации. Я пишу svn precommit hook, и ожидаемый комментарий коммита должен содержать одну из этих 4 строк в сообщении.grep для нескольких строк в одной строке
код я использую как ниже
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