In the below simple example, if CONDITION is not set in the script, running the script prints "True". However one would expect it to print "False". What is the reason for this behavior?
# Set CONDITION by using true or false:
# CONDITION=true or false
if $CONDITION; then
echo "True"
else
echo "False"
fi
CodePudding user response:
The argument to if
is a statement to execute, and its exit status is tested. If the exit status is 0
the condition is true and the statements in then
are executed.
When $CONDITION
isn't set, the statement is an empty statement, and empty statements always have a zero exit status, meaning success. So the if
condition succeeds.
CodePudding user response:
What you are looking for is the test command... also known as the [ square bracket command...
if test "$CONDITION"
then
echo true
fi
or..
if [ "$CONDITION" ]
then
echo true
fi