калькулятор на bash скрипт
Пишем собственный калькулятор в виде скрипта командной оболочки
Создание меню
Для начала создадим меню, используя оператор select.
Здесь создается меню, и пользователя будут запрашивать, какую операцию он хочет выполнить: сложение, вычитание, умножение или деление. Выглядеть это будет следующим образом:
Теперь добавим блок кода между do и done, использующий оператор case для реализации полнофункционального калькулятора.
Готовый калькулятор:
Мы создали меню, а теперь добавим операции сложения, вычитания, умножения и деления. После того, как пользователь посчитает то, что он хотел, его необходимо спросить, не хочет ли он еще что-нибудь вычислить. Если хочет, мы должны вернуться к началу. Для этого мы используем цикл while.
Мы использовали цикл while, создали меню, выполнили некоторые математические вычисления. В коде умножения:
используются кавычки («), так как * является ключевым словом в скриптах оболочки, и она не воспринимает * как знак умножения. Таким образом, чтобы дать понять скрипту, что мы используем * для умножения, используются кавычки.
Аналогично для кода деления:
Обратите внимание, что скрипт оболочки игнорирует дробную часть при делении. Например, если мы разделим 10 на 8, ответ будет 1, а остальное будет отброшено. Но, так как мы хотим видеть полный ответ, мы используем для этого утилиту bc. Информацию о ней можно найти на man-странице. Значение scale=2 показывает, что мы хотим получить ответ с точностью до второго знака после запятой. Теперь наш калькулятор выглядит так:
Вы также можете добавить в калькулятор возведение в степень или вычисления по модулю. Скопируйте код и поиграйте с ним.
Занимательная математика командной строки
Если вы пользователь Linux, Free/Open BSD или другой свободной ОС, есть вероятность, что интерфейс командной строки вам не чужд. В таком случае можно использовать командную оболочку для простых арифметических действий. Для этого не нужно устанавливать дополнительных программ, все уже есть в базовом наборе операционной системы. Они позволяют качественно заменить привычный калькулятор на столике счетовода.
bash калькулятор целочисленный
Арифметические операции с целочисленными в bash будут выглядеть так:
bc мэдскиллз
Целочисленные выражения это конечно хорошо, но как-то маловато даже для калькулятора. Благо в наборе есть еще bc — Си-подобный интерактивный интерпретатор. Не будем тратить время на сложение и вычитание, перейдем сразу к более интересным занятиям.
Еще 2 важные переменные: ibase и obase указывают на основание входящих и исходящих чисел.
При множественном возведении числа в степень важно расставить нужным образом скобки, ибо bc правоассоциативна и результат может быть не тот, на который вы рассчитывали.
Замер производительности процессора с bc
Много лун назад на одном популярном англоязычном форуме, ныне покойном, предложили гениально простой способ нагреть проц и посчитать его скорость в попугаях.
Скрипты bc
В bc можно, если очень нужно, определять функции и запускать скрипты. Определение функции имеет следующий синтаксис:
Как ЯП bc не взлетел, однако, в качестве настольного калькулятора он более чем хорош.
awk: арифмометр и гадалка
Оглашаю полный список возможностей
Иногда, хочется довериться судьбе и послать все на три буквы — awk. Вообще-то, это пример из книги издательства O’Reilly, имитирует бросание монетки, выдавая 2 разных события пить или не пить с одинаковой вероятностью.
В заключение
В нашей математической мастерской.еще очень много разных программ и если тема взлетит, попробуем перейти в первую и высшую лигу математического ПО с открытыми исходниками.
I. Замена калькулятора
III. Специализированные математические программы, уровень студент+
IV. Языки программирования, математические библиотеки и среды
Список, естественно не полный, поэтому заранее прошу прощение, если не указал чей-то излюбленный математический пакет или ЯП. Последняя группа — поистине разливанное море разнообразного и годного софта.
А вот и обещанный мэдскиллз вместе с ответом на вопрос из картинки. Источник.
Создание простого калькулятора в BASH
Я изучаю Bash Shell Scripting как раздел из Linux Foundation LFS101x.2, и есть Лаборатория для создания простого калькулятора Bash. Подробную информацию о лаборатории можно найти здесь: Лабораторная работа 5
Я пытаюсь запустить скрипт:
Сообщение об ошибке:
Вот мой bashShellScriptingLab5.sh:
3 ответа
Оставьте здесь несколько ошибок, я просмотрю их, а затем покажу пример работающего скрипта.
Во-первых, вы, кажется, сделали некоторые предположения о том, как работают функции.
Для вызовов функций не требуется ()
Также вы пытаетесь использовать глобальный позиционный параметр в своих функциях, которые не будут работать, поскольку у них есть свои собственные, поэтому вызов функции должен передавать то, что вы хотите
Имея это в виду, внутреннюю часть функции также придется изменить
Внутри функции есть еще несколько проблем
Пробелы имеют определенную цель в bash, поэтому они будут мешать знаку =. Команда читается как d (функция / файл / скрипт / exe / что угодно), а затем равенство является параметром для этого. Таким образом, у вас не может быть пробелов между = и обеими сторонами, поэтому его следует записать как
Хотя это по-прежнему вызовет ошибку компиляции из-за пробелов после expr. Поэтому нам нужно будет запустить это в подоболочке, чтобы назначить его d
Хотя лично я бы просто пошел на арифметику bash
Так что, если вы измените все это в своем сценарии, он должен работать, нужно было немного дополнить это, но не хватило времени.
Рабочий код
Простой калькулятор 1.0
Отсутствие пробелов между двумя выражениями возвращает вычисления без остатков:
Пробел между «/» вернет остаток:
Вы можете сделать первое выражение сколь угодно длинным без пробелов и умножить второе выражение, содержащее сложение, вычитание, умножение или деление:
Однако Simple Calculator не поддерживает деление остатка второго выражения, которое содержит вычисления, не заключенные в скобки: При разделении второго выражения на вычисления, второе выражение необходимо заключить в квадратные скобки, чтобы получить правильный результат :
Скобки для второго выражения необходимы!
1000/4/2/5/4/2 0
Чтобы вызвать функцию в bash, вам не нужны парные скобки, это то, что вас сбивает. Вместо этого просто сделай
Кроме того, для варианта «m» вы снова вызывали вычитание, я изменил его на умножение.
Это поможет вам преодолеть эту ошибку, я думаю, что после этого вы найдете больше
Как использовать калькулятор BC в скриптах
Программа Linux bc может использоваться в качестве удобного настольного калькулятора или в качестве математического языка сценариев. Это так же просто, как вызвать команду bc через терминал.
Помимо утилиты bc, оболочка Bash предоставляет несколько других методов для выполнения арифметических операций.
Программа bc также называется базовым калькулятором или настольным калькулятором.
Синтаксис команды BC
Синтаксис команды bc аналогичен языку программирования C, и поддерживаются различные операторы, такие как сложение, вычитание, плюс или минус и другие.
Это различные ключи, доступные с помощью команды bc:
См. Это Руководство по эксплуатации bc для получения более подробной информации о том, как вы можете использовать базовый калькулятор.
Пример команды BC
… чтобы получить такой результат:
При многократном выполнении серии вычислений имеет смысл использовать калькулятор bc как часть сценария. Простейшая форма такого скрипта будет выглядеть примерно так:
Первая строка – это просто путь к исполняемому файлу, который запускает этот скрипт.
Вторая строка содержит две команды. Команда echo генерирует строку, содержащую математическое выражение, заключенное в одинарные кавычки (в данном примере 6.5, разделенная на 2.7). Оператор канала (|) передает эту строку в качестве аргумента в программу bc. Выходные данные программы bc затем отображаются в командной строке.
Затем вы должны ввести:
Результат будет следующим:
Чтобы отобразить 3 знака после запятой, поскольку истинный ответ равен 2.407407 …, используйте оператор масштаба внутри строки, разделенной одинарными кавычками:
Для лучшей читаемости строку с расчетами можно переписать на несколько строк. Чтобы разбить командную строку на несколько строк, вы можете поставить обратную косую черту в конце строки:
Чтобы включить аргументы командной строки в вычисления bc, вы должны изменить одинарные кавычки на двойные, чтобы символы параметра командной строки интерпретировались оболочкой Bash:
Первый аргумент командной строки доступен с помощью переменной «$ 1», второй аргумент использует «$ 2» и т. Д.
Теперь вы можете написать свои собственные арифметические функции в отдельных скриптах Bash и вызывать их из других скриптов.
Например, если script1 содержит:
… и script2 содержит
Building simple calculator in BASH
I am learning Bash Shell Scripting as a section from the Linux Foundation LFS101x.2 and there is a Lab to create a simple Bash calculator. The Lab details are found here: Lab 5
I’m trying to run the script by:
The error message is:
Here is my bashShellScriptingLab5.sh:
3 Answers 3
Quit a few errors here, I’ll run through them and then show an example of a working script.
Firstly you appear to have made some assumptions about how functions work.
Calls to functions do not require the ()
Also you are trying to use global positional parameter in your functions which will not work as they have their own, so the call to the function should pass in what you want
With this in mind the inside of the function will also have to change
Inside the function there are few more problems
Spaces have a purpose in bash so will interfere with the = sign. The command is read as d(function/file/script/exe/whatever) and then the equals is a parameter to this. Thus you cannot have spaces between the = and both sides, so it should be written as
Although this will still cause a compile error due to the spaces after expr.So we will need to run this in a subshell to assign it to d
Although personally i would just go for bash arithmetic
So if you change all of these in your script it should work, was gonna pad this out a bit more but ran out of time.