Shubhanshu Mishra Shubhanshu Mishra - 6 months ago 19
Bash Question

Check if string is neither empty not space in shell script

I am trying to run the following shell script which is supposed to check if a string is neither space nor empty. However, I am getting the same output for all the 3 mentioned strings. I have tried using the "[[" syntax as well but to no avail.

Here is my code:

str="Hello World"
str2=" "
str3=""

if [ ! -z "$str" -a "$str"!=" " ]; then
echo "Str is not null or space"
fi

if [ ! -z "$str2" -a "$str2"!=" " ]; then
echo "Str2 is not null or space"
fi

if [ ! -z "$str3" -a "$str3"!=" " ]; then
echo "Str3 is not null or space"
fi


I am getting the following output:

# ./checkCond.sh
Str is not null or space
Str2 is not null or space

Answer

You need a space on either side of the !=. Change your code to:

str="Hello World"
str2=" "
str3=""

if [ ! -z "$str" -a "$str" != " " ]; then
        echo "Str is not null or space"
fi

if [ ! -z "$str2" -a "$str2" != " " ]; then
        echo "Str2 is not null or space"
fi

if [ ! -z "$str3" -a "$str3" != " " ]; then
        echo "Str3 is not null or space"
fi
Comments