Ubuntu bash если меньше чем иначе условие возвращает ошибку [: -lt: ожидается аргумент

Ubuntu bash если меньше чем иначе условие возвращает ошибку [: -lt: ожидается аргумент

Я выполняю следующий скрипт, чтобы узнать, есть ли прибыль или убыток от введенной цены продажи и себестоимости:

echo enter selling price
read sprice
echo enter costprice
read cprice

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

Все время возвращается Profitкод ошибки, например:

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

В чем может быть причина и как это исправить?

решение1

Измените $cpпеременную на $cpriceту, которую вы видите в строке, где написано read cprice.

echo enter selling price
read sprice
echo enter costprice
read cprice

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

Скрипт возвращает Profit, даже если $spriceимеет то же значение, что и $cprice, поэтому для точности добавьте эти строки в свой скрипт:

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

Итак, в итоге у вас получится следующее:

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

Связанный контент