LINUX.ORG.RU
ФорумAdmin

Деление в bash


0

0

Задача. Научить bash работать с большими числами. К примеру нужно мне поделить.

#!/bin/bash

t=` expr 10000000000 / 2 `

echo "Рарно= $t"

mail# ./test

Рарно= 1073741823

mail#

А если один ноль убрать то деление проходит правильно, как дело в том что мне надо работать с большими числами. Как мне решить эту проблему.


Re: Деление в bash

Bash обновите:

birdie@localhost ~]$ expr 10000000000 / 2
5000000000

[birdie@localhost ~]$ bash --version
bash --version
GNU bash, version 3.1.7(1)-release (i386-redhat-linux-gnu)
Copyright (C) 2005 Free Software Foundation, Inc.

А может у вас такой дистрибутив замечательный? ;)

birdie ★★★★★ ()
Ответ на: Re: Деление в bash от birdie

Re: Деление в bash

Давно expr является builtin функцией баша?

sdio ★★★★★ ()
Ответ на: Re: Деление в bash от sdio

Re: Деление в bash

Спасибо работает, только из этого образовался следующий вопрос. А если я хочу вставить переменную. К примеру:

#!/bin/bash

m=10000000000

t=`echo '{$m} / 257' | bc -l`

echo "Рарно= $t"

mail# ./test

(standard_in) 1: illegal character: $

Рарно=

mail#

osipen ()
Ответ на: Re: Деление в bash от osipen

Re: Деление в bash

> t=`echo '{$m} / 257' | bc -l`
все дело в кавычках
t=`echo "{$m} / 257" | bc -l`

sdio ★★★★★ ()
Ответ на: Re: Деление в bash от spirit

Re: Деление в bash

Кому как, а я привык с -l

$ bc
1000/3
333
^D
$ bc -l
1000/3
333.33333333333333333333
^D

sdio ★★★★★ ()
Ответ на: Re: Деление в bash от sdio

Re: Деление в bash

Спасибо sdio большое сам бы во век не разобрался.

osipen ()

Re: Деление в bash

А можно еще вот так: echo $(( 10000000000 / 2 ))

ZDE ()

Re: Деление в bash

#!/bin/bash

var2="10";
var3="20";
var4="40";

math() { eval "${*/=/=\$(echo \"}\""'| bc -l )' ; }

math var1="($var2 - $var3) / ($var4^($var2))" ;
math var11="(5*s($var2))10.1";

echo $var1;
echo $var11;

vtVitus ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.