Sida 1 av 1
Multiplicera två tal med BASH?
Postat: 02 dec 2009, 22:46
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
Re: Multiplicera två tal med BASH?
Postat: 02 dec 2009, 23:05
av gein
$((1,345 * 1000))
Re: Multiplicera två tal med BASH?
Postat: 02 dec 2009, 23:06
av Plutonium
Re: Multiplicera två tal med BASH?
Postat: 02 dec 2009, 23:10
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?
Re: Multiplicera två tal med BASH?
Postat: 02 dec 2009, 23:15
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.
Re: Multiplicera två tal med BASH?
Postat: 02 dec 2009, 23:28
av gein
$((1000 * `echo "1.501" | sed -e 's/\./,/'`))
Re: Multiplicera två tal med BASH?
Postat: 02 dec 2009, 23:38
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
Re: Multiplicera två tal med BASH?
Postat: 03 dec 2009, 04:30
av daromer
ang bc. du får lägga in bc.
Re: Multiplicera två tal med BASH?
Postat: 03 dec 2009, 08:14
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
Re: Multiplicera två tal med BASH?
Postat: 03 dec 2009, 09:28
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.