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


Увидели сообщение с непонятной ссылкой, спам, непристойность или оскорбление?
Воспользуйтесь ссылкой «Сообщить модератору» рядом с сообщением!

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

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

Оффлайн orionit

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

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

Вторая проблема
Захотел я значит научить мой калькулятор находить среднее арифметическое так вот, нужно что-бы пользователь вводил числа пока не введет пустую строку, проще говоря не нажмет enter, вот код
Код: (BASH) [Выделить]

while [ -z "$e1" ]; 
do
   echo "Введите числа"
     read e1


done


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

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

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

Оффлайн Peter_I

  • Старожил
  • *
  • Сообщений: 3031
    • Просмотр профиля
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

  • Модератор раздела
  • Старожил
  • *
  • Сообщений: 6017
  • Windows10, i3wm on Debian9, Manjaro20.0
    • Просмотр профиля
Re: Пара вопросов по bash.
« Ответ #3 : 02 Октября 2015, 15:34:25 »
Код: (bash) [Выделить]
e1=" "
while [ "$e1" ] ; do
    read -p "Введите числа" e1
    …
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.039 секунд. Запросов: 25.