Para mim, a comparação em cinzas funciona bem:
./busybox ash
$ [ 1 -lt 2 ] && echo true || echo false
false
$ [ 3 -lt 2 ] && echo true || echo false
true
$ a=1 b=2 c=3
$ [ $a -lt $b ] && echo true || echo false
true
$ [ $c -lt $b ] && echo true || echo false
false
$
Qual é exatamente o conteúdo de suas variáveis? Você está ciente de que -lt
se compara numericamente?
Você também pode fazer set -x
para ver o que está acontecendo.