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

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

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

Команда expr

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

expr 1 + 2 \* 8 / 3

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

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

скриншот_выражение1

Как вы можете видеть в окончательных расчетах (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

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

скриншот_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.   Педро лала сказал

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