Shperung Опубликовано 6 февраля, 2012 Жалоба Поделиться Опубликовано 6 февраля, 2012 возникла проблема при делении двух чисел - результат всегда целый. Как сделать дробный let res=$s/$pecho "Результат= $res" Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
gogi Опубликовано 6 февраля, 2012 Жалоба Поделиться Опубликовано 6 февраля, 2012 Shperung писал(а) Пнд, 06 Февраль 2012 18:52 возникла проблема при делении двух чисел - результат всегда целый. Как сделать дробный let res=$s/$pecho "Результат= $res" Подобный код практически на любом шелле выдаст либо ошибку, либо непредсказуемый результат. Сами то пробовали, перед тем как на форум постить? / - это не деление, а символ разделения каталогов файловой системы. Вообще в шэлле (в бэшэ, например), вещественных переменных нет. Есть только строки и целые цисла. Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Sleeping Daemon Опубликовано 7 февраля, 2012 Жалоба Поделиться Опубликовано 7 февраля, 2012 gogi писал(а) Пнд, 06 Февраль 2012 21:47 Shperung писал(а) Пнд, 06 Февраль 2012 18:52 возникла проблема при делении двух чисел - результат всегда целый. Как сделать дробный let res=$s/$pecho "Результат= $res" Подобный код практически на любом шелле выдаст либо ошибку, либо непредсказуемый результат. Сами то пробовали, перед тем как на форум постить? / - это не деление, а символ разделения каталогов файловой системы. Вообще в шэлле (в бэшэ, например), вещественных переменных нет. Есть только строки и целые цисла. Да ну. man bash раздел "ARITHMETIC EVALUATION" Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
gogi Опубликовано 7 февраля, 2012 Жалоба Поделиться Опубликовано 7 февраля, 2012 Sleeping Daemon писал(а) Втр, 07 Февраль 2012 08:23 gogi писал(а) Пнд, 06 Февраль 2012 21:47 Shperung писал(а) Пнд, 06 Февраль 2012 18:52 возникла проблема при делении двух чисел - результат всегда целый. Как сделать дробный let res=$s/$pecho "Результат= $res" Подобный код практически на любом шелле выдаст либо ошибку, либо непредсказуемый результат. Сами то пробовали, перед тем как на форум постить? / - это не деление, а символ разделения каталогов файловой системы. Вообще в шэлле (в бэшэ, например), вещественных переменных нет. Есть только строки и целые цисла. Да ну. man bash раздел "ARITHMETIC EVALUATION" И что там написано о вещественных переменных? Может еще и пример приведете. Сторонние утилиты типа bc не в зачет. PS. Если, конечно, Ваше возражение касается только кода let res=$s/$pecho "Результат= $res" о моего ответа о "/" - то это, действительно, сарказм. Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
gogi Опубликовано 7 февраля, 2012 Жалоба Поделиться Опубликовано 7 февраля, 2012 cat sh let res=1.0/2.0 echo "Результат= $res" gg@c-1:~$ zsh sh Результат= 0.5000000000 Бэш даст 0. Остальные (sh, dash, csh, tcsh - ошибку) Замечу, 1) правильные скрипты пишутся под sh. 2) В большинстве дистрибутивов линукс скрипты инициализации обрабатываются dash. Ну а zsh и здесь вне конкуренции Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Sleeping Daemon Опубликовано 8 февраля, 2012 Жалоба Поделиться Опубликовано 8 февраля, 2012 gogi писал(а) Втр, 07 Февраль 2012 18:42 Sleeping Daemon писал(а) Втр, 07 Февраль 2012 08:23 gogi писал(а) Пнд, 06 Февраль 2012 21:47 Shperung писал(а) Пнд, 06 Февраль 2012 18:52 возникла проблема при делении двух чисел - результат всегда целый. Как сделать дробный let res=$s/$pecho "Результат= $res" Подобный код практически на любом шелле выдаст либо ошибку, либо непредсказуемый результат. Сами то пробовали, перед тем как на форум постить? / - это не деление, а символ разделения каталогов файловой системы. Вообще в шэлле (в бэшэ, например), вещественных переменных нет. Есть только строки и целые цисла. Да ну. man bash раздел "ARITHMETIC EVALUATION" И что там написано о вещественных переменных? Может еще и пример приведете. Сторонние утилиты типа bc не в зачет. PS. Если, конечно, Ваше возражение касается только кода let res=$s/$pecho "Результат= $res" о моего ответа о "/" - то это, действительно, сарказм. Именно кода. В данном случае / интерпритируется как деление. Так что код верный. А вот ожидемый результат - нет. Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
gogi Опубликовано 8 февраля, 2012 Жалоба Поделиться Опубликовано 8 февраля, 2012 Sleeping Daemon писал(а) Срд, 08 Февраль 2012 08:19 Именно кода. В данном случае / интерпритируется как деление. Так что код верный. А вот ожидемый результат - нет. В случае бэша - да (опять же если переменнные - целочисленные, а не типа 5.00), в sh - ошибку. let - это БАШИЗМ и его обычно избегают. Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.