Search code examples
bashshell

How to check if an environment variable exists and get its value?


I am writing a shell script. In this shell script, I am have a variable that either takes a default value, or the value of an environment variable. However, the environment variable doesn't have to be present.

For instance, assume, before running the script, I perform the following operation:

export DEPLOY_ENV=dev

How do I tell the script to search for this environment variable, and store its value in a variable inside the script. Moreover, how do I tell the script that if this environment variable does not exist, store a default variable?


Solution

  • [ -z "${DEPLOY_ENV}" ] checks whether DEPLOY_ENV has length equal to zero. So you could run:

    if [[ -z "${DEPLOY_ENV}" ]]; then
      MY_SCRIPT_VARIABLE="Some default value because DEPLOY_ENV is undefined"
    else
      MY_SCRIPT_VARIABLE="${DEPLOY_ENV}"
    fi
    
    # or using a short-hand version
    
    [[ -z "${DEPLOY_ENV}" ]] && MyVar='default' || MyVar="${DEPLOY_ENV}"
    
    # or even shorter use
    
    MyVar="${DEPLOY_ENV:-default_value}"