O problema é:
if [ -z ${!VARIABLE}+x ]; then
echo "${VARIABLE} was defined"
else
echo "Need to set environment var $VARIABLE" && exit 1;
fi
-z
"string" é verdadeiro se a string estiver vazia.
+x
é um erro de digitação? Você não precisa disso.
Condição de trabalho:
if [ -z "${!VARIABLE}" ]; then
echo "Need to set environment var $VARIABLE" && exit 1;
else
echo "${VARIABLE} was defined"
fi