But as I know, bash [[ ]] have a merit that no need to quote var when compare.

x='a b' [[ $x == $x ]] && echo OK

works.

Ironical things is

x='mnt:[4026532411]' [[ $x != $x ]] && echo Oh my god

result is Oh my god

The unquoted right-hand side of == and != is treated as a pattern, not a literal string. mnt:[4026532411] will match mnt: followed by exactly one of 0, 1, 2, 3, 4, 5, or 6, since the patterns mnt:[4026532411] and mnt:[0123456] are equivalent. To match the lieral string, you need to quote the expansion.