$ echo $BASH_VERSION
3.2.57(1)-release
$ [[ "1.9" < "11.0" ]] && echo yes
yes
$
$ echo $BASH_VERSION
4.3.11(1)-release
$ [[ "1.9" < "11.0" ]] && echo yes
$
Here is "why" it doesn't work since 4.1:
Within double brackets, the > and < string comparison operators now conform to the locale.
which is ridiculous. This is good old ASCII numeric string, and the entire world expects period [.] is less then [0-9] in a string comparison. Which locale are we talking about?
Now the challenge is how to remove/replace this mythical locale to make Bash 4.x produce "yes" without using a custom function?
There are a lot of solutions using custom functions, like this elegant one using sort -V. However, this challenge is about configuring Bash's undocumented locale feature to behave like it only knows 7-bit ASCII character set in 1970 - period is less than numbers.