Multiplicera två tal med BASH?

Generella Linux-frågor och frågor gällande Linuxmjukvara som saknar egen forumkategori skall postas i detta forum
Kategoriregler
Vill du visa bilder i ditt inlägg? Använd funktionen "Ladda upp bilaga" nedanför textrutan!
mcdanne82
Tar hemautomation på allvar
Inlägg: 100
Blev medlem: 02 maj 2009, 15:52
Ort: Sverige

Multiplicera två tal med BASH?

Inlägg av mcdanne82 »

Hej

Är det någon som kan tipsa om hur man kan multiplicera två tal med decimaler med Bash script?

Tex 1.345 * 1000
Tex 1.321 * 2.345
gein
Tar hemautomation på allvar
Inlägg: 225
Blev medlem: 25 feb 2009, 23:21
Ort: Uppsala

Re: Multiplicera två tal med BASH?

Inlägg av gein »

$((1,345 * 1000))
Användarvisningsbild
Plutonium
Moderator
Inlägg: 1246
Blev medlem: 04 jan 2008, 02:34
Ort: Nossebro
Kontakt:

Re: Multiplicera två tal med BASH?

Inlägg av Plutonium »

Detta är ett alternativ:

Kod: Markera allt

echo "scale=2; "1.345"*1000" | bc -l

Kod: Markera allt

echo "scale=2; "1.321"*2.345" | bc -l
http://essunga.org
Moderator - Temperatur.nu
mcdanne82
Tar hemautomation på allvar
Inlägg: 100
Blev medlem: 02 maj 2009, 15:52
Ort: Sverige

Re: Multiplicera två tal med BASH?

Inlägg av mcdanne82 »

Det fungerade tyvärr ej för mig jag får detta fel
matte.sh: matte.sh: 6: bc: not found

Jag använder Unslung (V2.3R63-uNSLUng-6.10-beta)

Jag kanske behöver installera något för att få BC att funka, har du något tips om vad paketet kan heta isåfall?
mcdanne82
Tar hemautomation på allvar
Inlägg: 100
Blev medlem: 02 maj 2009, 15:52
Ort: Sverige

Re: Multiplicera två tal med BASH?

Inlägg av mcdanne82 »

Hmm missade inlägget med $((1,345 * 1000))
Detta verkar ju funka perfekt, för komma decimaler.

Dock så verkar ju OWFS ge värden med punkt istället för komma och då verkar inte multipliceringen fungera alls.
Någon som har tips om hur man omvandlar punkten till ett komma.
gein
Tar hemautomation på allvar
Inlägg: 225
Blev medlem: 25 feb 2009, 23:21
Ort: Uppsala

Re: Multiplicera två tal med BASH?

Inlägg av gein »

$((1000 * `echo "1.501" | sed -e 's/\./,/'`))
mcdanne82
Tar hemautomation på allvar
Inlägg: 100
Blev medlem: 02 maj 2009, 15:52
Ort: Sverige

Re: Multiplicera två tal med BASH?

Inlägg av mcdanne82 »

hmm jag får resultatet 501
när jag körde $((1000 * `echo "1.501" | sed -e 's/\./,/'`))
det verkar inte som att scriptet bryrsig om att den skall gångra med 1000 utan tar bara bort det som står före punkten för kör jag echo $((4321 * `echo "2.3456" | sed -e 's/\./,/'`)) får jag resultatet 3456
daromer
Hemautomation - det är mer än en hobby
Inlägg: 961
Blev medlem: 23 sep 2009, 09:31
Ort: Växjö

Re: Multiplicera två tal med BASH?

Inlägg av daromer »

ang bc. du får lägga in bc.
mcdanne82
Tar hemautomation på allvar
Inlägg: 100
Blev medlem: 02 maj 2009, 15:52
Ort: Sverige

Re: Multiplicera två tal med BASH?

Inlägg av mcdanne82 »

daromer skrev:ang bc. du får lägga in bc.
Det var ju för enkelt att man skulle prova de.. Men det gick kanon att installera och nu funkar echo "scale=2; "1.345"*1000" | bc -l
perfekt, med punk som decimalskiljare och allt.

Tack
gein
Tar hemautomation på allvar
Inlägg: 225
Blev medlem: 25 feb 2009, 23:21
Ort: Uppsala

Re: Multiplicera två tal med BASH?

Inlägg av gein »

mcdanne82 skrev:hmm jag får resultatet 501
när jag körde $((1000 * `echo "1.501" | sed -e 's/\./,/'`))
det verkar inte som att scriptet bryrsig om att den skall gångra med 1000 utan tar bara bort det som står före punkten för kör jag echo $((4321 * `echo "2.3456" | sed -e 's/\./,/'`)) får jag resultatet 3456
Ja, det fick jag med insåg jag nu. , verkar tolkas som listavgränsare snarare än decimal. Jag tror man måste använda bc istället.
Skriv svar