Or "[ ! -a file ]
is always true because -a
becomes logical AND. Use -e
instead."
if [ ! -o braceexpand ]
then
..
fi
if [[ ! -o braceexpand ]]
then
..
fi
or
if ! [ -o braceexpand ]
then
..
fi
Bash interprets [ ! -o opt ]
as
[ "!" ] || [ "opt" ]
instead of negating the condition. As
a result, the condition is always true.
Avoid this by using [[ ! -o opt ]]
or
! [ -o opt ]
.
The same issue applies to [ ! -a file ]
, but this is
easier fixed using POSIX standard [ ! -e file ]
.
None.
ShellCheck is a static analysis tool for shell scripts. This page is part of its documentation.