This tutorial is about checking variables in bash shell script programming for

  • Check variable is set or not
  • variable is empty or nonempty
  • Check for the variable is an empty string or not

Here are some examples of variable usage for variable price

Variable declarationDescription
price;variable is not declared and unset
price=;variable is declared and not unset
price=3000variable is declared, assigned, and not unset
price=(3000)variable is declared, assigned, and not unset
unset price;variable is not declared and unset

How to check if a variable is set in a bash script?

For example, the variable is set means,

  • It is declared and assigned with empty or non-empty.

In the below example,

  • variable1 is declared but empty
  • variable2 is not declared and not set.
#!/bin/bash
variable1=""
if [[  ${variable1+x}  ]]
then
  echo 'variable1 is set'
else
  echo 'variable1 is not set'
fi

if [[  ${variable2+x}  ]]
then
  echo 'variable2 is set'
else
  echo 'variable2 is not set'
fi

Output:

variable1 is set
variable2 is not set

Another way to check a variable is to set using the -v option

variable1=""
if [ ! -v $variable1 ]
then
    echo "variable1 is unset"
else
    echo "variable1 is set"

fi

Output:

variable1 is unset

How to check if the variable is unset in the bash script?

For example, the variable is unset means

  • It does not exist and is not declared.

In the below example,

  • variable1 is declared but empty
  • variable2 is not declared and is unset.
#!/bin/bash
variable1=""
if [[ ! ${variable1+x}  ]]
then
  echo 'variable1 is not set'
else
  echo 'variable1 is set'
fi

if [[ ! ${variable2+x}  ]]
then
  echo 'variable2 is not set or unset'
else
  echo 'variable2 is  set'
fi

Output:

variable1 is set
variable2 is not set or unset

How to check variable is empty or non-empty

This tutorial checks for a check for variable compared with space and wraps this expression inside [[]].

variable1=""
if [[ $variable1 = "" ]]
then
  echo 'variable1 is empty'
else
  echo 'variable1 is not empty'
fi

The same also can be written using a variable in double quotes wrapped in a single bracket[].

variable1=""
if [ "$variable1" = "" ]
    then
    echo "variable1 is empty"
else
  echo 'variable1 is not empty'
fi

Output:

variable1 is empty

Let us also check not to empty using! operator.

Here is a code for example checks if a variable is non-empty.

One way,

variable1=""
if [[ ! $variable1 = "" ]]
then
  echo 'variable1 is empty'
else
  echo 'variable1 is not empty'
fi

Another way,

variable1=""
if [ ! "$variable1" = "" ]
then
  echo 'variable1 is empty'
else
  echo 'variable1 is not empty'
fi

Another use -z option to check variable is set and empty or non-empty using the below code

variable2=""
variable3="test"

if [ -z "$variable2" ]
then
    echo "variable2 is set and empty"
else
    echo "variable2 is set and nonempty"
fi

if [ -z "$variable3" ]
then
    echo "variable3 is set and empty"
else
    echo "variable3 is set and non-empty"
fi

Output:

variable2 is set and empty
variable3 is set and non-empty