Ubuntu Bash, wenn kleiner als, sonst Bedingung, die Fehler zurückgibt [: -lt: Argument erwartet

Ubuntu Bash, wenn kleiner als, sonst Bedingung, die Fehler zurückgibt [: -lt: Argument erwartet

Ich erstelle das folgende Skript, um zu ermitteln, ob sich aus dem eingegebenen Verkaufspreis und dem Selbstkostenpreis ein Gewinn oder Verlust ergibt;

echo enter selling price
read sprice
echo enter costprice
read cprice

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

Es wird ständig Profitmit einem Fehlercode zurückgegeben, wie:

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

was könnte der Grund sein und wie kann ich das Problem beheben?

Antwort1

Ändern Sie die $cpVariable in $cpricedas, was Sie in der Zeile lesen read cprice.

echo enter selling price
read sprice
echo enter costprice
read cprice

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

Das Skript gibt Profit zurück, auch wenn $spricederselbe Wert wie hat $cprice. Fügen Sie Ihrem Skript zur Genauigkeit daher die folgenden Zeilen hinzu:

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

Das Ergebnis ist also:

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

verwandte Informationen