I'm having issues with the below script. It should exit only if there is not a variable set by that name.
#!/bin/bash
set -e
echo 'START: env_vars_config'
required_var(){
VARIABLE=$1
echo "detecting if $VARIABLE exists"
echo ${!VARIABLE}
if [ -z ${!VARIABLE}+x ]; then
echo "${VARIABLE} was defined"
else
echo "Need to set environment var $VARIABLE" && exit 1;
fi
}
# these are required variables to deploy
required_var MONGO_URL
required_var AWS_REGION
required_var AUTOSCALING_GROUP_NAME
required_var LATEST_STABLE_COMMIT
required_var ENV_FILE
required_var DEPLOY_FILE
required_var POSTMAN_ENVIRONMENT_UID
required_var POSTMAN_COLLECTION_UID
required_var POSTMAN_API_KEY
required_var MANDRILL_KEY
required_var SERVER_SECRET
required_var S3_BUCKET
required_var ELASTIC_URL
required_var ELASTIC_PASSWORD
required_var ELASTIC_PREFIX
echo 'END: env_vars_config'
Right now this script always exits on the first check MONGO_URL however I know this is variable set and is a string.
- What would a check for
unsetlook like? - What would a check for
unsetorempty stringlook like?
FIXED
2 issues, firstly the + symbol at the end of the if statement was a typo.
Secondly I had the order of the if statement backwards.
if [ -z "${!VARIABLE}" ]; then
echo "Need to set environment var $VARIABLE" && exit 1;
else
echo "${VARIABLE} was defined"
fi