Форум русскоязычного сообщества Ubuntu


Следите за новостями русскоязычного сообщества Ubuntu в Twitter-ленте @ubuntu_ru_loco

Автор Тема: Пара вопросов по bash.  (Прочитано 683 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн orionit

  • Автор темы
  • Активист
  • *
  • Сообщений: 581
    • Просмотр профиля
Пара вопросов по bash.
« : 01 Октябрь 2015, 19:54:24 »
Всем привет, пишу калькулятор и возникли две проблемы. 

Проблема первая
Как научить мой калькулятор любить числа с плавающей точкой т.е любые действия с числами с плавающей точкой приводят к вот такой ошибке, ./calc.sh: строка 22: 2.2 + 2.2: Ошибка синтаксиса: неправильный арифметический оператор (ошибочная метка ".2 + 2.2")но пи разных вычислениях разный текст ошибки.
Помогите пофиксить.

Вторая проблема
Захотел я значит научить мой калькулятор находить среднее арифметическое так вот, нужно что-бы пользователь вводил числа пока не введет пустую строку, проще говоря не нажмет enter, вот код
Код: Bash
  1.  
  2. while [ -z "$e1" ];  
  3. do
  4.    echo "Введите числа"
  5.      read e1
  6.  
  7.  
  8. done
  9.  
  10.  

В данном случае выходит сообщение на ввод числа я ввожу число и цикл заканчивает работу, подскажите как можно реализовать правильно?

Всем заранее огромное спасибо.

P.S Не подумайте это не домашка, сам вот себе мозговой штурм задал.
« Последнее редактирование: 01 Октябрь 2015, 20:28:09 от orionit »
Всем добра как у бобра, а если вы и без добра добры, значит вы в душе бобры.

Оффлайн Peter_I

  • Старожил
  • *
  • Сообщений: 2194
    • Просмотр профиля
Re: Пара вопросов по bash.
« Ответ #1 : 01 Октябрь 2015, 23:44:58 »
Второе, например, так:
#!/bin/bash

z2=1
while [ -n "$z2" ] ; do
  echo "enter" "z2="$z2
  read z1
  if [ -z $z1 ] ; then
        z2=
  fi
done
Пётр.

Оффлайн orionit

  • Автор темы
  • Активист
  • *
  • Сообщений: 581
    • Просмотр профиля
Re: Пара вопросов по bash.
« Ответ #2 : 02 Октябрь 2015, 00:02:55 »
Peter_I,
Большое спасибо. :)
Всем добра как у бобра, а если вы и без добра добры, значит вы в душе бобры.

Оффлайн Azure

  • Модератор раздела
  • Старожил
  • *
  • Сообщений: 6016
  • Windows10, i3wm on Debian9, Manjaro20.0
    • Просмотр профиля
Re: Пара вопросов по bash.
« Ответ #3 : 02 Октябрь 2015, 15:34:25 »
Код: Bash
  1. e1=" "
  2. while [ "$e1" ] ; do
  3.     read -p "Введите числа" e1
  4.     …
  5. done
В Линукс можно сделать ВСЁ что угодно, достаточно знать КАК !

Оффлайн Cxms

  • Активист
  • *
  • Сообщений: 407
    • Просмотр профиля
Re: Пара вопросов по bash.
« Ответ #4 : 25 Октябрь 2015, 07:53:47 »
Функция-калькулятор c плавающей точкой:
Calc() { echo "scale=15; $*" | bc | sed 's/^\./0./' | sed '/\.0*/s/0*$//' | sed 's/\.$//'; }Примеры использования:
сложение
Calc 792+476
вычитание
Calc 157-91
умножение
Calc 9*12
деление
Calc 25/3
возведение в степень
Calc 3^5
« Последнее редактирование: 28 Октябрь 2015, 23:50:57 от Cxms »

 

Страница сгенерирована за 0.099 секунд. Запросов: 24.