Para citar a partir da página de manual bash(1)
:
When used with [[, the < and > operators sort lexicographically using the current locale.
Portanto, 167 é de fato maior que 10800, já que 6 é um caractere ASCII maior que 0.
entrada de bash:
if [[ 167 > 10800 ]]
then
echo "I can't compare"
fi
saída bash:
I can't compare
Eu acho que a pergunta é bem óbvia ...
O caractere >
não funciona para o tipo de comparação desejado. Você tem que usar -gt
:
if [[ 167 -gt 10800 ]]
then
echo "I can't compare"
fi
E se você quiser fazer uma comparação menor do que a comparação, será necessário fazer -lt
. Para ver as outras opções que você precisa fazer para comparação, consulte a test
manpage .
Use colchetes curvos para uma comparação numérica verdadeira
if (( 167 > 10800 ))
then
echo "I can't compare"
fi
Bom resumo aqui: link
Tags bash comparison