Found couple of ways, the common one : My test scripts : #!/bin/sh if [ -n $JJ ] ; then echo "-n1" fi if [ -z $JJ ] ; then echo "-z1" fi JJ="" if [ -n $JJ ]; then echo "-n2" fi if [ -z $JJ ] ; then echo "-z2" fi JJ="jcrys26" if [ -n $JJ ]; then echo "-n3" fi if [ -z $JJ ]; then echo "-z3" fi The result is ... -n1 -z1 -n2 -z2 -n3 -z to test if a string is empty. -n to test is a string is not empty. What about if a string is undefined? And the result really confused me. I have checked the environment variable, I don't have one with name of "JJ". Reference : http://linuxcommand.org/wss0090.php Have kept this in draft for a long long time due to the -n result. So.... A quick conclusion is, use the -z . Use -n at your own risk. To revisit this next time, if I still remember. :P
Previously known as jcrys26's kdb. A learning dump and sharing place.