Substituir:
if [ $current_price < $new_price ]; then
ARROW="+"
else if [ $current_price > $new_price ]; then
ARROW="-"
else
ARROW="="
fi
fi
Com:
if echo "$current_price < $new_price" | bc | grep -q 1; then
ARROW="+"
elif echo "$current_price > $new_price" | bc | grep -q 1; then
ARROW="-"
else
ARROW="="
fi
No teste ( [ ), o operador para comparação numérica menor do que a comparação é -lt não < . (Isso ocorre porque < é para redirecionamento de entrada.) Assim, se seus preços fossem inteiros, você poderia usar:
if [ "$current_price" -lt "$new_price" ]; then
Mas, seus preços são de ponto flutuante, então precisamos de bc ou equivalente para fazer as contas. bc imprime 1 se uma condição lógica for verdadeira e 0 se for falsa. Seguimos isso com grep -q 1 , que define um código de retorno adequado que if pode usar.
Além disso, observe que o bash suporta elif , que fornece uma sintaxe mais simples do que else if . Por fim, muitos usuários acham que o recuo torna os comandos bash como if-then-else-fi mais fáceis de ler.