Anyone know why this happens? Is this a bug of bash?
x='mnt:' [[ $x == $x ]] && echo OK
I am expecting result
OK, but it did not.
Of course, this works
[[ "$x" == "$x" ]] && echo OK
But as I know, bash [[ ]] have a merit that no need to quote var when compare.
x='a b' [[ $x == $x ]] && echo OK
Ironical things is
x='mnt:' [[ $x != $x ]] && echo Oh my god
result is Oh my god
The unquoted right-hand side of
!= is treated as a pattern, not a literal string.
mnt: will match
mnt: followed by exactly one of 0, 1, 2, 3, 4, 5, or 6, since the patterns
mnt: are equivalent. To match the lieral string, you need to quote the expansion.
x='mnt:' [[ $x == "$x" ]] && echo OK