math - выполнение математических вычислений
Синопсис
math [(-s | --scale) N] [(-b | --base) BASE] EXPRESSION ...
Описание
math выполняет математические вычисления. Она поддерживает простые операции, такие как сложение, вычитание и так далее, а также функции, такие как abs(), sqrt() и ln().
По умолчанию вывод — это число с плавающей точкой с обрезкой хвостовых нулей. Для получения фиксированного представления можно использовать опцию --scale, включая --scale=0 для целочисленного вывода.
Обратите внимание, что расширение параметров происходит до оценки выражений. Это может быть очень полезно для выполнения вычислений, включающих переменные оболочки или вывод подстановки команд, но это также означает, что скобки (()) и символ звездочки (*) символа подстановки должны быть экранированы или заключены в кавычки. x также можно использовать для обозначения умножения, но за ним должен следовать пробел, чтобы отличить его от шестнадцатеричных чисел.
Скобки для функций необязательны — math sin pi выводит 0. Однако запятая связывается с внутренней функцией, поэтому math pow sin 3, 5 является ошибкой, так как она пытается передать sin аргументы 3 и 5. В случае сомнений используйте скобки.
math игнорирует пробелы между аргументами и принимает ввод в качестве нескольких аргументов (внутренне соединенных пробелом), поэтому math 2 +2 и math "2 + 2" работают одинаково. math 2 2 является ошибкой.
Доступны следующие опции:
- -s N или --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как входные данные. - -h или --help
-
Отображает справку по использованию этой команды.
Значения возврата
Если выражение успешно вычисляется и не приводит к переполнению/подпополнению или возвращает NaN, возвращаемое status значение равно нулю (успех), в противном случае — единице.
Синтаксис
math знает некоторые операторы, константы, функции и, очевидно, может считывать числа.
Для чисел . всегда является символом разделителя разрядов независимо от локали - 2.5, а не 2,5. Также доступны научная запись (10e5) и шестнадцатеричная запись (0xFF).
Операторы
math знает следующие операторы:
-
+ -
для сложения
-
- -
для вычитания
-
* or x -
для умножения
-
/ -
для деления (Обратите внимание, что
*— это символ подстановки, и его необходимо заключать в кавычки или экранировать,xдолжен следовать пробел, иначе он выглядит как0xшестнадцатеричная запись.) -
^ -
для возведения в степень
-
% -
для остатка от деления
-
( or ) -
для группировки. (Их необходимо заключать в кавычки или экранировать, потому что
()обозначает подстановку команды.)
Все они используются в инфиксной форме - 5 + 2, а не + 5 2.
Константы
math знает следующие константы:
-
e -
число Эйлера
-
pi -
π, вы знаете это. Половина от Тау
-
tau -
Эквивалентно 2π, или количество радиан в круге
Используйте их без ведущего $ - pi - 3 должно быть около 0.
Функции
math поддерживает следующие функции:
Все тригонометрические функции используют радианы (масштаб на основе π, а не 360°).
Примеры
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.
math 'ncr(49,6)' выводит 13983816 - это количество возможных выборов в лотерее «6 из 49».
Примечания по совместимости
Выпуски Fish 1.x и 2.x полагались на команду bc для обработки math выражений. Начиная с версии fish 3.0.0, fish использует библиотеку tinyexpr и оценивает выражение без участия каких-либо внешних команд.
Вам не нужно использовать -- перед выражением, даже если оно начинается с минуса, который в противном случае мог бы интерпретироваться как недопустимая опция. Если вы вставите -- перед выражением, это заставит остановку сканирования опций, как и для любой другой команды, и оно не будет частью выражения.
© 2022 fish-shell developers
Licensed under the GNU General Public License, version 2.
https://fishshell.com/docs/3.4/cmds/math.html