возникла проблема при делении двух чисел - результат всегда целый. Как сделать дробный
let res=$s/$pecho "Результат= $res"
возникла проблема при делении двух чисел - результат всегда целый. Как сделать дробный
let res=$s/$pecho "Результат= $res"
Shperung писал(а) Пнд, 06 Февраль 2012 18:52
возникла проблема при делении двух чисел - результат всегда целый. Как сделать дробный
let res=$s/$pecho "Результат= $res"
Подобный код практически на любом шелле выдаст либо ошибку, либо непредсказуемый результат. Сами то пробовали, перед тем как на форум постить?
/ - это не деление, а символ разделения каталогов файловой системы.
Вообще в шэлле (в бэшэ, например), вещественных переменных нет. Есть только строки и целые цисла.
gogi писал(а) Пнд, 06 Февраль 2012 21:47
Shperung писал(а) Пнд, 06 Февраль 2012 18:52
возникла проблема при делении двух чисел - результат всегда целый. Как сделать дробный
let res=$s/$pecho "Результат= $res"
Подобный код практически на любом шелле выдаст либо ошибку, либо непредсказуемый результат. Сами то пробовали, перед тем как на форум постить?
/ - это не деление, а символ разделения каталогов файловой системы.
Вообще в шэлле (в бэшэ, например), вещественных переменных нет. Есть только строки и целые цисла.
Да ну.
man bash
раздел “ARITHMETIC EVALUATION”
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"
о моего ответа о “/” - то это, действительно, сарказм.
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 и здесь вне конкуренции
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"
о моего ответа о “/” - то это, действительно, сарказм.
Именно кода. В данном случае / интерпритируется как деление. Так что код верный. А вот ожидемый результат - нет.
Sleeping Daemon писал(а) Срд, 08 Февраль 2012 08:19
Именно кода. В данном случае / интерпритируется как деление. Так что код верный. А вот ожидемый результат - нет.
В случае бэша - да (опять же если переменнные - целочисленные, а не типа 5.00), в sh - ошибку. let - это БАШИЗМ и его обычно избегают.