Como fazer cálculos decimais em bash usando BC

Como fazer cálculos decimais em bash usando BC

Os cálculos decimais às vezes são necessários no Bash. O Idioma de Programação de Bash de Cálculo Padrão ($ []) é incapaz de fornecer uma saída decimal. Embora possamos enganá -lo a calcular (mas não gerar) uma saída decimal multiplicando os números por exemplo, um fator de 1000 e depois fazendo uma divisão à base de texto, essa é uma solução alternativa feia e cria código complexo. No entanto, existe uma utilidade no Bash que pode fazer nativamente cálculos decimais sem truques ou soluções alternativas!

Neste tutorial, você aprenderá:

  • Como usar o BC para realizar cálculos decimais
  • Como fazer cálculos decimais na linha de comando Bash ou em seus scripts
  • Como usar variáveis ​​para armazenar os resultados produzidos pelo BC
  • Como usar variáveis ​​em outros cálculos
  • Como evitar os erros de citação variável de bash
Como fazer cálculos decimais em bash usando BC

Requisitos de software e convenções usadas

Requisitos de software e convenções de linha de comando Linux
Categoria Requisitos, convenções ou versão de software usada
Sistema Independente da distribuição Linux
Programas Linha de comando Bash, sistema baseado em Linux
Outro Qualquer utilidade que não esteja incluída no shell bash por padrão pode ser instalada usando sudo apt-get install utility-name (ou yum install para sistemas baseados em redhat)
Convenções # - requer que o Linux -Commands seja executado com privilégios de raiz diretamente como usuário root ou por uso de sudo comando
$-exige que o Linux-Commands seja executado como um usuário não privilegiado regular

Instalando BC

Para instalar o BC no Ubuntu, Mint ou qualquer outro sistema operacional baseado em Debian/APT, tipo:

$ sudo apt install bc 


Para instalar o BC no Fedora, Redhat ou qualquer outro sistema operacional baseado em redhat/yum, tipo:

$ sudo yum install bc 

Cálculos de bash padrão

Podemos fazer um problema de divisão simples diretamente no Bash:

$ echo $ [13/4] 3 

Isso tenta e divide 13 por 4 usando o idioma bash padrão $ [cálculo]. Enquanto isso é bastante versátil:

$ eco "1+1? A resposta é: $ [1 + 1] "1 + 1? A resposta é: 2 

Lamentavelmente é incapaz de gerar decimais. As soluções alternativas para esse problema são complexas e feias, conforme descrito anteriormente.

BC para o resgate

Uma solução mais elegante é usar bc para cálculos.

Embora o BC também possa ser usado para os mesmos cálculos que já é possível no Bash:

$ echo '13 / 4 '| BC 3 


Também é capaz de produzir resultados baseados em decimais usando o -eu (-eu define a biblioteca de matemática padrão) opção para bc:

$ echo '13 / 4 '| BC -l 3.25000000000000000000 

Armazenando resultados como variáveis

Também podemos armazenar o resultado como uma variável usando uma subshell:

$ Resultado = $ (echo '13/4 '| bc -l) $ echo $ resultado 3.25000000000000000000 

Aqui usamos o mesmo cálculo que no último exemplo, mas usamos uma subshell $ () Para fazer o cálculo. Isso nos permite armazenar o resultado em uma variável facilmente. Agora podemos usar essa variável ainda mais em outros cálculos ou simplesmente emitir o resultado como mostrado acima. Para usá -lo em outro cálculo, você pode:

$ echo "$ resultado * 4" | BC -l 13.00000000000000000000 

Observe como usamos as citações duplas desta vez para definir nossa aritmética. A razão para isso é que queremos o $ Resultado variável a ser substituída por seu valor real. Se tivéssemos usado citações únicas (') em vez disso, a operação teria falhado, pois o nome da variável teria sido considerado uma entrada literal. Em outras palavras, nenhuma substituição por seu valor teria acontecido, como podemos ver na seguinte saída:

$ echo '$ resultado * 4' | bc -l (padrão_in) 1: caractere ilegal: $ (padrão_in) 1: erro de sintaxe 

Pronto para aprender mais festa? Explore nossa série útil de dicas e truques da linha de comando bash!

Conclusão

Neste artigo, exploramos como fazer cálculos baseados em decimais com bc Na linha de comando. Os mesmos comandos funcionam bem quando usados ​​em um script de shell. Também analisamos as deficiências do uso de idiomas de cálculo de bash padrão, além de usar variáveis ​​em combinação com bc Usando subshells. Finalmente descobrimos o que acontece se alguém cita incorretamente variáveis ​​em bash.

Tutoriais do Linux relacionados:

  • Ubuntu 20.04 truques e coisas que você pode não saber
  • Exemplos úteis de linha de comando BASH - Parte 3
  • Exemplos úteis de linha de comando bash e exemplos de truques - Parte 1
  • Bash idiomas variáveis ​​avançados para sensibilidade ao caso…
  • Exemplos úteis de linha de comando Bash e truques - Parte 4
  • Exemplos úteis de linha de comando bash e exemplos de truques - Parte 2
  • Exemplos úteis de linha de comando BASH - Parte 5
  • Como persistir dados para pós -grausql em java
  • Gerenciamento de processos de fundo bash
  • Computer Math Basics: binário, decimal, hexadecimal, octal