Bash
математический
Поиск…
Математика с использованием постоянного тока
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