Comment Comment by dataflow It's still relevant if you use -a, -o, or parentheses (which I guess is reason to avoid them): $ a=1; b=1; c='!'; d='!' $ [ "$a" = "$b" -a "$c" = "$d" ] -bash: [: too many arguments $ [ '!' '(' "$c" = "$d" ')' ] -bash: [: `)' expected, found ! $ echo "${BASH_VERSION}" 5.1.4(1)-release Note that it's not even a bug here; it's necessary for disambiguation. parent dataflow 5 years ago