Você pode alternativamente escapar de $
:
$(...)
$
no seu código:
cat > .git/hooks/pre-commit << EOM
#Colors
RED='3[0;31m'
NC='3[0m' # No Color
# Javascript unit tests
res=$(script -q /dev/null ./tests/hooks/non-ui-test-hook )
RESULT=$?
[ $RESULT -ne 0 ] && echo -e "$res" && exit 1
echo -e "All test cases passed.\n"
exit 0
EOM