Команда Expr и calc: решайте математические выражения в терминале

Я один из тех, кто всегда программирует скрипты колотить для решения повседневных ситуаций (взломать пароль точки доступа / маршрутизатора, автоматизировать процессы и т. д.).

В определенных случаях я видел необходимость присвоить значение некоторого математического выражения переменной или просто работать с математическими выражениями, и тогда я сталкивался с проблемой, что bash и математические выражения, вычисления не очень дружелюбны. Бывает, что bash не похож на питон, что уж говорить переменная = 1 + 5/6 (например), в Bash мы должны использовать команду выраж o трассировка

Команда expr

Другими словами, команда expr помогает нам решать математические выражения в терминале, с ее помощью мы можем вычислить то, что нам нужно. Например, если мы хотим, чтобы появился результат 1 + 2 * 8/3, мы вводим в терминал:

expr 1 + 2 \* 8 / 3

Обратите внимание, что перед звездочкой * я ставлю обратную косую черту - »\… это необходимо, потому что expr не интерпретирует звездочку как символ умножения, если только \

И результат появится на экране. Вот скриншот с некоторыми примерами:

screenshot_expr1

Как вы можете видеть в окончательных расчетах (14/4 и 13/4), 14, разделенное на 4, на самом деле составляет 3.5, а 13, разделенное на 4, на самом деле составляет 3.25, так как же возможно, что он показывает нам 3 в обоих случаях? Что происходит, так это то, что команда expr не показывает нам десятичные дроби, то есть то, что следует после запятой, она не показывает их, а показывает нам только целое число.

Если мы хотим присвоить переменной результат математического выражения (Пример: 10/2), это будет примерно так:

variable=`expr 10 / 2`

Затем мы проверяем это с помощью:

echo $variable

Важно, чтобы между каждым символом был пробел, то есть пробел между каждым числом, каждым символом сложения, вычитания, умножения или деления.

Команда Calc

Этот, в отличие от предыдущего, точен с точки зрения десятичных знаков, например:

calc 15 / 4

Это покажет нам: 3.75

Вот скриншот с несколькими примерами:

screenshot_calc

В отличие от expr, когда мы используем calc, лучше, чтобы между каждым символом не было пробелов, то есть, чтобы не было пробелов между числами и символами, как вы видите на предыдущем изображении. Им также не нужно добавлять \ перед *

Что ж, в основном это то, о чем я хотел вам рассказать.

Однако есть еще несколько интересных советов для каждой команды (особенно для calc), я рекомендую вам прочитать руководство:

man calc

man expr

привет


Содержание статьи соответствует нашим принципам редакционная этика. Чтобы сообщить об ошибке, нажмите здесь.

11 комментариев, оставьте свой

Оставьте свой комментарий

Ваш электронный адрес не будет опубликован.

*

*

  1. Ответственный за данные: Мигель Анхель Гатон
  2. Назначение данных: контроль спама, управление комментариями.
  3. Легитимация: ваше согласие
  4. Передача данных: данные не будут переданы третьим лицам, кроме как по закону.
  5. Хранение данных: база данных, размещенная в Occentus Networks (ЕС)
  6. Права: в любое время вы можете ограничить, восстановить и удалить свою информацию.

  1.   Elav сказал

    Очень полезно, хотя использовать Bash для математических вычислений определенно не годится, десятичные числа считаются :)

    1.    Вада сказал

      Г-н elav, у нас все еще есть калькулятор bash 🙂 мы можем использовать аргумент -l, чтобы использовать стандартную математическую библиотеку
      что-то такое

      $ echo "(4/8)+(6/9)" | bc -l
      1.166666666666666666666666

      ha

      1.    Elav сказал

        ????

      2.    элиотайм3000 сказал

        Превосходно. Таким образом я избегаю проблем с установкой XCalc при использовании чистого X11.

      3.    КЗКГ ^ Гаара сказал

        О, я не знал этого, отлично !!

  2.   clow_eriol сказал

    Спасибо, весьма полезно 😉

    1.    КЗКГ ^ Гаара сказал

      Спасибо ^ _ ^

  3.   Ноктуидо сказал

    Спасибо. Системный калькулятор был конкурентом для основных операций.

    1.    КЗКГ ^ Гаара сказал

      Спасибо, что прочитали нас 🙂

  4.   Хоакин сказал

    Хороший совет!

  5.   Педро лала сказал

    Я не люблю меня

bool (истина)