[ false ] is
true. Remove the bracketsif [ false ]
then
echo "triggers anyways"
fiif false
then
echo "never triggers"
fi[ str ] checks whether str is non-empty. It
doesn't matter if str is false, it will still
be evaluated for non-emptyness.
Instead, use the command false which -- as the manual
puts it -- does nothing, unsuccessfully.
None
ShellCheck is a static analysis tool for shell scripts. This page is part of its documentation.