bash скриптинг (смена типа переменной)
shurik 24 марта, 2008 - 15:38
Вот собственно сам скрипт
0#!/bin/sh
1 eps=1
2 while [ $(($eps+1)) -gt 1 ]
3 do
4 eps=`echo $eps/2 | bc -l`
5 echo -n "eps=$eps"
6 done
после строчки №4 eps становится строкой с результатом .50000000000000
и соответсвенно не может продолжить цикл в строке 2,
так как 1 прибовляю строке.
подскажите как изменить тип на целочисленный. как eps после строки 4 сделать числом.
»
- Для комментирования войдите или зарегистрируйтесь
Видишь ли в чом соль
bash вообще не умеет работать с floating point :( а bc работает с той точностью, которая тебе нужна
_________________
~? **!
спасибо
спасибо =)
слушай а как сделать чтоб bc все время делил с остатком....
а то в конце получаеться 0 =(
или етого на bash + bc нельзя добиться.
лучше писать на С?
просто есть идиотское задание
реализовать программу для просчёта машинного эпсилона, принцип:
эпс=1
while ((1+епс)>1) { епс=епс/2; }
print эпс;
я конечно понимаю что ето не эпсилон машинный... а просто "точность языка".
на баш наверно не получится реализовать?
Можно на python
Можно на python (-:E
Пожалуйста, не описывайте своё железо в подписи
Perl тоже
Perl тоже вариант! :)
В мане на БЦ
В мане на БЦ есть екзампл с циклами, определениями функций и все такое. Типа бс скриптинг. Ваша задача вычислительная . Тоесть бс вполне подходит. Шелл в этом случае играет роль сопряжения бс с остальным скриптом (если это необходимо), но никак не инструмента вычисления ибо муторно (но вполне возможно). Кстати строки парсить и разбирать в шелл скрипте иногда проще при помощи awk/sed нежели при помощи организации циклов в самом баше. В общем и целом нужно правильно подобрать инструмент чтобы менше скрипеть.