bash скриптинг (смена типа переменной)

Вот собственно сам скрипт

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 работает с той точностью, которая тебе нужна

#!/bin/bash
eps=1
while [ `echo "$eps + 1 > 1" | bc` != 0 ]; do
        eps=`echo "scale=10; $eps / 2" | bc`
        echo $eps
done

_________________
~? **!

спасибо

спасибо =)
слушай а как сделать чтоб bc все время делил с остатком....
а то в конце получаеться 0 =(
или етого на bash + bc нельзя добиться.
лучше писать на С?

просто есть идиотское задание

реализовать программу для просчёта машинного эпсилона, принцип:
эпс=1
while ((1+епс)>1) { епс=епс/2; }
print эпс;

я конечно понимаю что ето не эпсилон машинный... а просто "точность языка".
на баш наверно не получится реализовать?

Можно на python

Perl тоже

Perl тоже вариант! :)

В мане на БЦ

В мане на БЦ есть екзампл с циклами, определениями функций и все такое. Типа бс скриптинг. Ваша задача вычислительная . Тоесть бс вполне подходит. Шелл в этом случае играет роль сопряжения бс с остальным скриптом (если это необходимо), но никак не инструмента вычисления ибо муторно (но вполне возможно). Кстати строки парсить и разбирать в шелл скрипте иногда проще при помощи awk/sed нежели при помощи организации циклов в самом баше. В общем и целом нужно правильно подобрать инструмент чтобы менше скрипеть.

Настройки просмотра комментариев

Выберите нужный метод показа комментариев и нажмите "Сохранить установки".