Поиск…


Математика с использованием постоянного тока

dc является одним из старейших языков в Unix.

Он использует обратную полировку , означающую, что вы являетесь первым номером штабелирования, а затем выполняете операции. Например, 1+1 записывается как 1 1+ .

Чтобы напечатать элемент из верхней части стека, используйте команду p

echo '2 3 + p' | dc
5

or

dc <<< '2 3 + p'
5

Вы можете печатать верхний элемент много раз

dc <<< '1 1 + p 2 + p'
2
4

Для отрицательных чисел используйте префикс _

dc <<< '_1 p'
-1

Вы также можете использовать заглавные буквы от A to F для чисел от 10 and 15 и . как десятичная точка

dc <<< 'A.4 p'
10.4

dc использует произвольную точность, что означает, что точность ограничена только доступной памятью. По умолчанию точность установлена ​​на 0 десятичных знаков

dc <<< '4 3 / p'
1

Мы можем увеличить точность с помощью команды k . 2k будет использовать

dc <<< '2k 4 3 / p'
1.33

dc <<< '4k 4 3 / p'
1.3333

Вы также можете использовать его на нескольких строках

dc << EOF
1 1 +
3 *
p
EOF
6

bc - препроцессор для dc .

Математика с использованием bc

bc - произвольный язык калькулятора точности. Его можно использовать в интерактивном режиме или выполнять из командной строки.

Например, он может распечатать результат выражения:

echo '2 + 3' | bc
5

echo '12 / 5' | bc
2

Для арифметики с плавающей точкой вы можете импортировать стандартную библиотеку bc -l :

echo '12 / 5' | bc -l
2.40000000000000000000

Его можно использовать для сравнения выражений:

echo '8 > 5' | bc
1

echo '10 == 11' | bc
0

echo '10 == 10 && 8 > 3' | bc
1

Математика с использованием возможностей bash

Арифметическое вычисление также может быть выполнено без привлечения каких-либо других программ, таких как:

Умножение:

echo $((5 * 2))
10

Раздел:

echo $((5 / 2))
2

Модульное:

echo $((5 % 2))
1

Возведение:

echo $((5 ** 2))
25

Математика, использующая expr

expr или Evaluate expressions оценивают выражение и записывают результат на стандартный вывод

Основная арифметика

expr 2 + 3
5

При умножении вам нужно избежать знака *

expr 2 \* 3
6

Вы также можете использовать переменные

a=2
expr $a + 3
5

Имейте в виду, что он поддерживает только целые числа, поэтому выражение, подобное этому

expr 3.0 / 2

будет вызывать ошибку expr: not a decimal number: '3.0' .

Он поддерживает регулярное выражение для соответствия шаблонам

expr 'Hello World' : 'Hell\(.*\)rld'
o Wo

Или найдите индекс первого символа в строке поиска

Это заставит expr: syntax error в Mac OS X , потому что она использует BSD expr, которая не имеет команды индекса, в то время как expr в Linux обычно GNU expr

expr index hello l
3

expr index 'hello' 'lo'
3


Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow