math - выполнение математических вычислений
Синопсис
math [-sN | --scale=N] [-bBASE | --base=BASE] [--] EXPRESSION
Описание
math выполняет математические вычисления. Он поддерживает простые операции, такие как сложение, вычитание и так далее, а также функции, такие как abs(), sqrt() и ln().
По умолчанию вывод — это число с плавающей точкой с обрубленными нулями в конце. Чтобы получить фиксированное представление, можно использовать параметр --scale, включая --scale=0 для целочисленного вывода.
Обратите внимание, что расширение параметров происходит до оценки выражений. Это может быть очень полезно для выполнения вычислений, включающих переменные оболочки или результат подстановки команд, но это также означает, что скобки (()) и символ звездочки (*) символа подстановки файлов должны быть экранированы или заключены в кавычки. x также можно использовать для обозначения умножения, но за ним должен следовать пробел, чтобы отличить его от шестнадцатеричных чисел.
math игнорирует пробелы между аргументами и принимает входные данные как несколько аргументов (внутренне соединённых пробелом), поэтому math 2 +2 и math "2 + 2" работают одинаково. math 2 2 — это ошибка.
Доступны следующие параметры:
-
-sNили--scale=Nустанавливают масштаб результата.Nдолжно быть целым числом или словом «max» для максимального масштаба. Масштаб нуль приводит к округлению результатов до ближайшего целого числа. Таким образом,3/2возвращает1вместо2, которое1.5обычно округлило бы. Это для совместимости сbc, которое было основой этой команды до fish 3.0.0. Значения масштаба, большие нуля, приводят к тому, что результат округляется по обычным правилам до указанного числа десятичных знаков. -
-b BASEили--base BASEустанавливают числовую систему, используемую для вывода (mathвсегда понимает шестнадцатеричные числа как входные данные). В настоящее время он понимает «hex» или «16» для шестнадцатеричных и «octal» или «8» для восьмеричных и подразумевает масштаб 0 (другие масштабы приводят к ошибке), поэтому он обрубит результат до целого числа. Это может измениться в будущем. Шестнадцатеричные числа будут напечатаны с префиксом0x. Восьмеричные числа будут иметь префикс0и не будут распознаватьсяmathкак входные данные.
Значения возврата
Если выражение успешно оценивается и не переполняется/не недополняется или не возвращает NaN, возвращаемое значение status равно нулю (успех), иначе — единице.
Синтаксис
math знает некоторые операторы, константы, функции и (конечно) может читать числа.
Для чисел . всегда является символом разделителя разрядов независимо от локали — 2.5, а не 2,5. Также доступны научная запись (10e5) и шестнадцатеричная форма (0xFF).
Операторы
math знает следующие операторы:
-
+для сложения и-для вычитания. -
*илиxдля умножения,/для деления. (Обратите внимание, что*— это символ подстановки файлов, и его нужно заключать в кавычки или экранировать,xнужно сопровождать пробелом, или он будет выглядеть как0xшестнадцатеричная запись.) -
^для возведения в степень. -
%для вычисления остатка от деления. -
(и)для группировки. (Их нужно заключать в кавычки или экранировать, потому что()обозначает подстановку команды.)
Все они используются по принципу инфиксной записи — 5 + 2, а не + 5 2.
Константы
math знает следующие константы:
-
e— число Эйлера. -
pi— π. Вы знаете это. Половина от Тау. -
tau. Эквивалентно 2π или количеству радиан в окружности.
Используйте их без ведущего $ — pi - 3 должно быть примерно 0.
Функции
math поддерживает следующие функции:
absacosasinatanatan2-
bitand,bitorиbitxorдля выполнения побитовых операций. Эти операции отбрасывают любые дробные части и интерпретируют остальную часть как целое число. ceilcoscosh-
exp— функция экспоненты по основанию е. -
fac— факториал floor-
ln— логарифм по основанию е -
logилиlog10— логарифм по основанию 10 ncrnpr-
pow(x,y)возвращает x в степени y (и может быть записано какx ^ y) -
round— округляет до ближайшего целого числа, отходя от 0 sinsinhsqrttantanh
Все тригонометрические функции используют радианы.
Примеры
math 1+1 выводит 2.
math $status - 128 выводит числовой код завершения последней команды минус 128.
math 10 / 6 выводит 1.666667.
math -s0 10.0 / 6.0 выводит 1.
math -s3 10 / 6 выводит 1.666.
math "sin(pi)" выводит 0.
math 5 \* 2 или math "5 * 2" или math 5 "*" 2 все выдают 10.
math 0xFF выводит 255, math 0 x 3 выводит 0 (потому что вычисляет 0 умноженное на 3).
math "bitand(0xFE, 0x2e)" выводит 46.
math "bitor(9,2)" выводит 11.
math --base=hex 192 выводит 0xc0.
Примечания по совместимости
Выпуски Fish 1.x и 2.x полагались на команду bc для обработки выражений math. Начиная с fish 3.0.0, fish использует библиотеку tinyexpr и оценивает выражение без участия каких-либо внешних команд.
Вам не нужно использовать -- перед выражением, даже если оно начинается с минуса, который в противном случае может быть интерпретирован как недопустимый параметр. Если вы вставите -- перед выражением, это остановит сканирование параметров, как и для любой другой команды, и оно не будет частью выражения.
© 2020 fish-shell developers
Licensed under the GNU General Public License, version 2.
https://fishshell.com/docs/3.2/cmds/math.html