[ 0 ] is true. Use
false instead.if [ 0 ]
then
echo "always triggers"
fiif false
then
echo "never triggers"
fi[ str ] checks whether str is non-empty. It
doesn't matter if str is 0, 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.