It seems that you can write a negated conditional either as
if ! [[ ... ]]; then
or
if [[ ! ... ]]; then
Are there reasons to choose one or the other approach, assuming that the semantics of the operation are the same? (I.e., obviously, in the second version, if the ...
is a compound statement and you're not careful to group the expression properly then you may end up negating only the first part of the expression.)