This question already has an answer here:

I have this set of example here to test if the user has keyed in any data after he presses enter.

echo -n "Type a digit or a letter > "
read character
if  [ "$character" != "$blank"]; then
        echo "You typed something"
    echo "Enter something"

The code above should be testing if the variable contains anything, but I can't seem to get it to work, any help ? Much appreciated.

marked as duplicate by Gilles, Networker, John WH Smith, jimmij, jordanm Jan 9 '15 at 2:05

This question has been asked before and already has an answer. If those answers do not fully address your question, please ask a new question.


You can simply use [ "$character" ] to test if string is nonzero, what is equivalent of longer form [ -n "$character" ]. Alternatively [ -z $character ] to test if string is zero.

However many times in interactive scripts what is really needed is to set some default value in the variable which user can override. If this is your intention then you can avoid test and use parameter expansion:

read character
echo "character is set to ${character:-default}"

Not the answer you're looking for? Browse other questions tagged or ask your own question.