Bash wie testen Kommazahl kleiner 10

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
Benutzeravatar
xcomm
Beiträge: 794
Registriert: 21.09.2003 05:12:01
Wohnort: Europe
Kontaktdaten:

Bash wie testen Kommazahl kleiner 10

Beitrag von xcomm » 26.11.2023 13:19:35

Hi Gemeinde,

suche einen Test in Bash um zu testen, ob einer Dezimalzahl kleiner 10 ist. Es geht um einen Preis. Kommastellen sind mir im Grund auch egal, wenn es das einfacher macht.

Sorry, wenn das Euch ganz einfach erscheint, oder schon 100 mal gefragt wurde.

Code: Alles auswählen

if(( $price  < 10 )); then
  :
fi
danke

rodney
Beiträge: 336
Registriert: 09.12.2016 04:15:59

Re: Bash wie testen Kommazahl kleiner 10

Beitrag von rodney » 26.11.2023 13:30:02

$price ist bei dir ein String. Die bash mag fuer solche Vergleiche jedoch Ganzzahlen d.h. du musst erst das Komma und die Nachkommastellen aus dem String entfernen/abschneiden bevor du diesen vergleichen kannst. Copy&Paste Loesung gibt es keine :wink:

Benutzeravatar
Livingston
Beiträge: 1455
Registriert: 04.02.2007 22:52:25
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: 127.0.0.1

Re: Bash wie testen Kommazahl kleiner 10

Beitrag von Livingston » 26.11.2023 13:57:06

Den Teil ab dem Komma schneidest Du mit ${price%.*} ab.
Damit kannst Du das Ergebnis als Ganzzahl in if auswerten:

Code: Alles auswählen

if [ "${price%.*}" -ge 12 ]; then
	echo "Ich bin größer oder gleich 12"
fi
EDIT: Fehlendes Leerzeichen ergänzt
Zuletzt geändert von Livingston am 26.11.2023 14:10:59, insgesamt 1-mal geändert.
Der Hauptunterschied zwischen etwas, was möglicherweise kaputtgehen könnte und etwas, was unmöglich kaputtgehen kann, besteht darin, dass sich bei allem, was unmöglich kaputtgehen kann, falls es doch kaputtgeht, normalerweise herausstellt, dass es unmöglich zerlegt oder repariert werden kann.
Douglas Adams

juribel
Beiträge: 188
Registriert: 20.06.2023 10:17:01

Re: Bash wie testen Kommazahl kleiner 10

Beitrag von juribel » 26.11.2023 14:00:42

Ja, mit bash geht es vielleicht auch irgendwie. Für solche Sachen benutzt du vielleicht besser eine "richtige" Programmiersprache, es gibt ja genug. Perl z. B. Oder Python oder was immer. Ist Geschmacks- und Gewohnheitssache. Beispiel in Perl:

Code: Alles auswählen

perl -e 'if ( 1.234 > 1.233999 ) { print "Ist grösser\n"; }'

Benutzeravatar
Meillo
Moderator
Beiträge: 8818
Registriert: 21.06.2005 14:55:06
Wohnort: Balmora
Kontaktdaten:

Re: Bash wie testen Kommazahl kleiner 10

Beitrag von Meillo » 26.11.2023 14:06:53

Es geht auch so:

Code: Alles auswählen

if [ `/usr/bin/printf %.0f $price` -lt 10 ]; then
	...
fi
(Man sollte sicherstellen, dass man ein printf verwendet, das mit Kommazahlen umgehen kann. Shell-Builtins konnen das nicht immer.)
Use ed once in a while!

Benutzeravatar
xcomm
Beiträge: 794
Registriert: 21.09.2003 05:12:01
Wohnort: Europe
Kontaktdaten:

Re: Bash wie testen Kommazahl kleiner 10

Beitrag von xcomm » 26.11.2023 14:35:40

danke ! :-)

tobo
Beiträge: 1997
Registriert: 10.12.2008 10:51:41

Re: Bash wie testen Kommazahl kleiner 10

Beitrag von tobo » 26.11.2023 16:16:39

Ist ja schon zur Zufriedenheit beantwortet, aber hier noch eine zusätzliche Lösung:

Code: Alles auswählen

$ price=12.34; if ((`bc <<< "$price < 10"`)); then echo '<10'; else echo '>=10'; fi
>=10
$

Benutzeravatar
Meillo
Moderator
Beiträge: 8818
Registriert: 21.06.2005 14:55:06
Wohnort: Balmora
Kontaktdaten:

Re: Bash wie testen Kommazahl kleiner 10

Beitrag von Meillo » 26.11.2023 18:41:27

Ich denke, es gibt zwei verschiedene Loesungansaetze:
1) Schneide die Kommastellen ab und vergleiche dann ganzzahlig in der Shell
2) Verwende ein Hilfsprogramm, das auf Gleitkommabasis vergleichen kann
Use ed once in a while!

Antworten