-
Notifications
You must be signed in to change notification settings - Fork 1.9k
SC2244
Vidar Holen edited this page Dec 29, 2018
·
3 revisions
if [ "$1" ]
then
echo "True"
fi# Check if $1 is empty or non-empty
if [ -n "$1" ]
then
echo "True, $1 is a non-empty value"
fi
# Check instead if $1 is true or false, as in Java
[ "$1" = "true" ]
# Check instead if $1 is non-zero or zero, as in C
[ "$1" -ne 0 ]
# Check instead if $1 is defined (even if just assigned the empty string) or undefined
[ "${1+x}" = "x" ]
[ "$var" ] is equivalent to [ -n "$var" ] and checks whether the string is non-empty.
Users more familiar with other languages are therefore often surprised to learn that [ "$var" ] is true when var=false or var=0.
Adding the explicit -n helps clarify that this is a string comparison, and not related to any concept of boolean values or comparisons as it is in most languages.
If you are familiar with the semantics of [, you can ignore this suggestion with no ill effects.
- Help by adding links to BashFAQ, StackOverflow, man pages, POSIX, etc!