Porque "-24" é maior que "0" em uma base de comparação de strings - três caracteres versus um caractere. Para comparar números:
$ [[ -24 -gt 0 ]] && echo "Hi"
$
Por exemplo:
# [[ -24 > 0 ]] && echo "Hi"
Hi
Desde ontem, encontrei esse comportamento estranho. Qual poderia ser o motivo?