expr
não suporta números de ponto flutuante:
Os operandos são números inteiros ou cadeias. Inteiros consistem em um ou mais dígitos decimais, com um cabeçalho opcional "-". expr converte qualquer coisa que apareça em uma posição de operando para um inteiro ou uma string dependendo da operação que está sendo aplicada a ele.
E :
O expr primeiro tenta converter ambos os argumentos em inteiros e faz um comparação numérica; se qualquer das conversões falhar, Comparação lexicográfica usando a sequência de ordenação de caracteres especificado pela localidade LC_COLLATE.
Se você quiser comparar floats, use algo como bc
(que usa a convenção "0 é falsa, 1 é verdadeira"):
expr1 < expr2
The result is 1 if expr1 is strictly less than expr2.
Então:
$ bc <<< '(916.1 < 1024)'
1
$ if [ "$(bc <<< '(916.1 < 1024)')" -eq 1 ]; then echo yes; else echo no; fi
yes