Ubuntu bash se condição menor que outra condição retornando erro [: -lt: argumento esperado

Ubuntu bash se condição menor que outra condição retornando erro [: -lt: argumento esperado

Estou fazendo o seguinte script para saber se há lucro ou prejuízo do preço de venda inserido e do preço de custo como;

echo enter selling price
read sprice
echo enter costprice
read cprice

if [ $sprice -lt $cp ]
  then 
    echo Loss
else
  echo Profit
fi

O tempo todo ele está retornando Profit, com um código de erro, tipo;

:~/shell$ sh shellb.sh
enter selling price
10
enter costprice
20
shellb.sh: 6: [: -lt: argument expected
Profit

qual pode ser o motivo e como posso corrigir isso?

Responder1

Mude a $cpvariável para $cpricea qual você lê na linha que diz read cprice.

echo enter selling price
read sprice
echo enter costprice
read cprice

if [ $sprice -lt $cprice ]
  then 
    echo Loss
else
    echo Profit
fi  

O script retorna Lucro mesmo que $spricetenha o mesmo valor que $cprice, portanto, para ser mais preciso, adicione estas linhas ao seu script:

elif [ $sprice -eq $cprice ]  
  then   
    echo Break\ even

Então o que você acaba é:

echo enter selling price
read sprice
echo enter costprice
read cprice

if [ $sprice -lt $cprice ]
  then 
    echo Loss
elif [ $sprice -eq $cprice ]  
  then   
    echo Break\ even
else
    echo Profit
fi

informação relacionada