Могу ли я сделать базовую математику в Bash?


33

Мне было интересно, можно ли делать простые математики в Bash? Я думаю, что-то вроде, = 25-5 напечатает 20 или что-то.

Это можно сделать легко?

Спасибо


Ответы:


21

Просто введите bcв терминал. Затем введите все математические вещи после этого.

bcозначает « б Основныеоперации гр alculator»

Затем введите quitи введите для выхода.


2
Просто для наглядности было бы так: эхо 25-5 | до н.э.
Медхэт Хелми

Для некоторых математических задач вам может понадобиться заключить их в кавычки, например,echo '0.6 * 12' | bc
Goose

Вам также может понадобиться добавить масштаб, чтобы получить точность с плавающей запятой, т.е.echo "scale=2;557/3672" | bc
CpILL

60

Если мы действительно говорим о Bash, а не о Bourne Shell (sh) или других оболочках, это легко.

Bash может вычислить базовые выражения с помощью $ ((expression)), и вот пример того, как вы можете его использовать:

 а = 3
 б = 4
 с = $ ((7 * а + б))
 эхо $ с

или для интерактивного использования, просто

 echo $ ((7 * 3 + 4))

Похоже, это правильный bash, так как это работает. Я вхожу в один из моих университетских кластеров
Курру

4
$((expression))Синтаксис является частью POSIX shстандарта, и производные от ksh.
geekosaur

6
Баш может делать только целочисленную арифметику. Он не может выполнять арифметику с плавающей запятой, как ksh93 или zsh
fpmurphy

3
Это должен был быть принятый ответ.
Андреас Хартманн

10

Есть несколько утилит командной строки для выполнения простых вычислений:

$ expr 100 \* 4
400

$ echo '100 * 4' | bc
400

назвать только два из них. Будьте осторожны при умножении, так как если вы не избежите *, оболочка может попытаться интерпретировать его как подстановочный знак.



7

Ну, на ваш вопрос ответили, но учтите это:

В большинстве дистрибутивов Linux предустановлен Python, так почему бы не использовать его?

Просто введите

python

в терминале, а затем делайте всю арифметику, какую хотите, например,

2+2

Будет выходной 4 :)

Вы также можете сделать это прямо из терминала с -cаргументом python.

python -c 'print 2+2'

На моем компьютере ввод текста pythonзанимает почти две секунды. Скорее раздражает, если вы просто хотите сделать что-то простое, как 2 + 2.
ShreevatsaR

используйте python3, если вы не хотите округлять число с плавающей точкой. например , 2 / 30(питон: 0) (python3: 0.06666666666666667)
hrvoj3e

и если у вас установлен только python3, но вы хотите округлить, используйте 2//30илиint(2/30)
mazunki

3

Или Рубин. :)

Хотя он может и не быть предустановленным, он довольно быстрый.

Типа irbтогда 2+2.

Или просто ruby -e 'p 2+2'


Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.