Ваш первый тест:
if [ "$AUTHOR" == "testuser" ]; then
exit 0
fi
Вызывает прерывание (с нулевым значением выхода), если AUTHOR равен testuser
!
Итак, ваш второй тест:
if [ "$AUTHOR" == "testuser" ]; then
exit 0
else
#User is trying to modify testfile.txt
echo "Only testuser can edit testfile.txt." 1>&2
exit 1
fi
Это не нужно, потому что на этом этапе AUTHOR не testuser
!
И, возможно, будет лучше вместо вашего цикла for:
if $SVNLOOK changed -t "$TXN" "$REPOS" | $GREP "^[U|A]" | $AWK '{print $2}' | grep -q 'path/to/file/testfile.txt'; then
echo "Only testuser can edit testfile.txt." 1>&2
exit 1
fi
Тест if [[ "$PATH" == *path/to/file/testfile.txt ]]; then
не работает, потому что этот тест не понимает переменные оболочки (и лучше заключить в кавычки из-за *
).
И я бы заменил часть
for PATH in $COMPARE
do
if [[ "$PATH" == *path/to/look/at/only/* ]]; then
на
if echo ${COMPARE} | grep -q "path/to/look/at/only"; then