Ubuntu bash si la condición es menor que otra cosa que devuelve el error [: -lt: argumento esperado

Ubuntu bash si la condición es menor que otra cosa que devuelve el error [: -lt: argumento esperado

Estoy haciendo el siguiente script para saber si hay ganancias o pérdidas a partir del precio de venta y el precio de costo ingresados;

echo enter selling price
read sprice
echo enter costprice
read cprice

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

Todo el tiempo, regresa Profitcon un código de error, como;

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

¿Cuál podría ser el motivo y cómo puedo solucionarlo?

Respuesta1

Cambia la $cpvariable a $cpricela que es la que lees en la línea que dice read cprice.

echo enter selling price
read sprice
echo enter costprice
read cprice

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

El script devuelve Profit incluso si $spricetiene el mismo valor que $cprice, así que para ser preciso, agregue estas líneas a su script:

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

Entonces lo que terminas es:

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

información relacionada