Null & empty string comparison in Bash

bash, shell

Solution

First of all, note you are not using the variable correctly:

if [ "pass_tc11" != "" ]; then
#     ^
#     missing $

Anyway, to check if a variable is empty or not you can use `-z` --> the string is empty:

if [ ! -z "$pass_tc11" ]; then
   echo "hi, I am not empty"
fi

or `-n` --> the length is non-zero:

if [ -n "$pass_tc11" ]; then
   echo "hi, I am not empty"
fi

From `man test`:

-z STRING

the length of STRING is zero

-n STRING

the length of STRING is nonzero

Samples:

$ [ ! -z "$var" ] && echo "yes"
$

$ var=""
$ [ ! -z "$var" ] && echo "yes"
$

$ var="a"
$ [ ! -z "$var" ] && echo "yes"
yes

$ var="a"
$ [ -n "$var" ] && echo "yes"
yes

Problem

I don't set any values for $pass_tc11; so it is returning null while echoing. How to compare it in `if` clause? Here is my code. I don't want "Hi" to be printed... ``` -bash-3.00$ echo $pass_tc11 -bash-3.00$ if [ "pass_tc11" != "" ]; then > echo "hi" > fi hi -bash-3.00$ ```

Original source

Related problems