I recently got asked how to check if a variable is empty in a Bash script.

Here is an example script, where we expect the user to enter a value when asked to do so:

#!/bin/bash

echo "Enter your name: "
read name

echo "Hello ${name}"

If you run the script, you will be able to press enter, and the output would be just Hello.

Here’s how to check if a variable is empty in a Bash script!

These answers are provided by our Community. If you find them useful, show some love by clicking the heart. If you run into issues leave a comment, or add your own answer to help others.

×
1 answer

The quick answer on how to check if a variable is empty in Bash is to use the following expression:

[[ -z ${string} ]]

If we take the example from above, you can then use this in an if statement as follows:

#!/bin/bash

echo "Enter your name: "
read name

if [[ -z ${name} ]] ; then
    echo "Make sure to specify your name!"
else
    echo "Hello ${name}"
fi

Check if a variable is empty with bash if statement

You can also combine this in a while statement and ask the user for their input until they actually provide a value:

#!/bin/bash

echo "Enter your name: "
read name

while [[ -z ${name} ]] ; do
    echo "Make sure to specify your name!"

    echo "Enter your name: "
    read name
done

echo "Hello ${name}"

Check if a variable is empty with bash if statement

That way, your user will be asked to enter their name until they actually input some value.

I hope that this helps!
Regards,
Bobby

Submit an Answer