2017-07-05 4 views
2

In bash, ich versuche, Mathe mit einer ganzen Zahl und einer Gleitzahl zu tun, um ein ganzzahliges Ergebnis zu erhalten. unter Code-Schnipsel nicht funktioniert:bash - math multiple Ganzzahl mit Float-Typ

x=25 
y=0.2 
z=$((x*y)) 
echo $x*$y=$z 

Die Fehlermeldung lautet:

sh: line 3: 0.2: syntax error: invalid arithmetic operator (error token is ".2") 

Wenn beide variable ganze Zahl ist, es funktioniert gut.

Wie kann ich "25 * 0.2 = 5" vom Bash-Skript bekommen?

+3

'bash' nicht unterstützt Schwimmer Ingangpunktarithmetik. Verwenden Sie 'bc' oder' awk' oder 'perl' – anubhava

Antwort

1

Platzieren Sie Ihren Ausdruck in Anführungszeichen in echo. Auch Ihr z = $ ((x * y)) wird z leer oder Fehler machen:

25*0.2: syntax error: invalid arithmetic operator (error token is ".2")

So ... hier getesteten Code und könnte wie folgt sein:

x=25 
y=0.2 
z=$(echo $x*$y | bc) 
echo "$x*$y=$z" 

Ergebnis wird sein, dies wie:

25*0.2=5.0 

Hinweis: haben wir bc Befehl für z Berechnung