Искусство программирования на языке сценариев командной оболочки


Программирование на языке сценариев командной оболочки - стр. 169


Один из вариантов вызова bc -- использование вложенного документа, внедряемого в блок с подстановкой команд. Это особенно актуально, когда сценарий должен передать bc значительный по объему список команд и аргументов.

variable=`bc << LIMIT_STRING options statements operations LIMIT_STRING `

...или...

variable=$(bc << LIMIT_STRING options statements operations LIMIT_STRING )

Пример 12-34. Пример взаимодействия bc со "встроенным документом"

#!/bin/bash # Комбинирование 'bc' с # 'вложенным документом'.

var1=`bc << EOF 18.33 * 19.78 EOF ` echo $var1 # 362.56

# запись $( ... ) тоже работает. v1=23.53 v2=17.881 v3=83.501 v4=171.63

var2=$(bc << EOF scale = 4 a = ( $v1 + $v2 ) b = ( $v3 * $v4 ) a * b + 15.35 EOF ) echo $var2 # 593487.8452

var3=$(bc -l << EOF scale = 9 s ( 1.7 ) EOF ) # Возвращается значение синуса от 1.7 радиана. # Ключом "-l" вызывается математическая библиотека 'bc'. echo $var3 # .991664810

# Попробуем функции... hyp= # Объявление глобальной переменной. hypotenuse () # Расчет гипотенузы прямоугольного треугольника. { hyp=$(bc -l << EOF scale = 9 sqrt ( $1 * $1 + $2 * $2 ) EOF ) # К сожалению, функции Bash не могут возвращать числа с плавающей запятой. }

hypotenuse 3.68 7.31 echo "гипотенуза = $hyp" # 8.184039344

exit 0

Пример 12-35. Вычисление числа "пи"

#!/bin/bash # cannon.sh: Аппроксимация числа "пи".

# Это очень простой вариант реализации метода "Monte Carlo", #+ математическое моделирование событий реальной жизни, #+ для эмуляции случайного события используются псевдослучайные числа.

# Допустим, что мы располагаем картой квадратного участка поверхности со стороной квадрата 10000 единиц. # На этом участке, в центре, находится совершенно круглое озеро, #+ с диаметром в 10000 единиц. # Т.е. озеро покрывает почти всю карту, кроме ее углов. # (Фактически -- это квадрат со вписанным кругом.) # # Пусть по этому участку ведется стрельба железными ядрами из древней пушки # Все ядра падают где-то в пределах данного участка, #+ т.е.


Начало  Назад  Вперед



Книжный магазин