Posso fazer matemática básica no Bash?

Respostas:

21

Basta digitar bcno terminal. Em seguida, digite todas as coisas matemáticas depois disso.

bcsignifica " b asic c alculator"

Em seguida, digite quite digite para sair.

DCIndieDev
fonte
2
Só por uma questão de clareza, seria assim: eco 25-5 | bc
Medhat Helmy
Para alguns problemas de matemática, pode ser necessário envolvê-la entre aspas, comoecho '0.6 * 12' | bc
Goose
pode ser necessário adicionar escala para que a precisão do ponto flutuante funcione, ou seja,echo "scale=2;557/3672" | bc
CpILL
60

Se estamos realmente falando sobre Bash, não sobre Bourne Shell (sh) ou outras conchas, é fácil.

O Bash pode calcular expressões básicas com $ ((expression)) e aqui está um exemplo de como você pode usá-lo:

 a = 3
 b = 4
 c = $ ((7 * a + b))
 eco $ c

ou para uso interativo, apenas

 eco $ ((7 * 3 + 4))
Seikku Kaita
fonte
Parece ser uma festança adequada, pois isso funciona. Estou ssh-ing em um dos meus cachos universidades
Kurru
4
A $((expression))sintaxe faz parte do shpadrão POSIX e é derivada de ksh.
Geekosaur
6
O Bash só pode fazer aritmética inteira. Ele não pode fazer aritmética de ponto flutuante como ksh93 ou zsh
fpmurphy
3
Esta deveria ter sido a resposta aceita.
Andreas Hartmann
10

Existem vários utilitários de linha de comando para fazer cálculos simples:

$ expr 100 \* 4
400

$ echo '100 * 4' | bc
400

para citar apenas dois deles. Cuidado ao fazer a multiplicação como se você não escapasse do seu *, o shell pode tentar interpretá-lo como um curinga.

Majenko
fonte
9

Outro é o AWK:

awk 'BEGIN {print 4 + 3 / 12}'
Pausado até novo aviso.
fonte
7

Bem, sua pergunta foi respondida, mas considere o seguinte:

A maioria das distribuições linux tem python pré-instalado, então por que não usá-lo?

Apenas digite

python

no terminal e faça toda a aritmética desejada, como

2+2

Produzirá 4 :)

Você também pode fazer isso diretamente do terminal com o -cargumento python.

python -c 'print 2+2'
Marcus Maxwell
fonte
No meu computador, a digitação pythonleva quase dois segundos para iniciar. Bastante irritante se você quiser fazer algo simples como 2 + 2.
ShreevatsaR
use python3 se você não quiser arredondamento de flutuação. eg 2 / 30(python: 0) (python3: 0.06666666666666667)
hrvoj3e
e se você tiver o python3 instalado, mas quiser arredondar, use 2//30orint(2/30)
mazunki 8/09
3

Ou Ruby. :)

Embora possa não ser pré-instalado, é bastante rápido.

Digite irbentão 2+2.

Ou apenas ruby -e 'p 2+2'

turbilhão
fonte
0

Perl é outra opção:

perl -E 'say 1/7'

saídas

0.142857142857143
Pausado até novo aviso.
fonte