calculadora em linha de comando e script

Atualizado em: 23/07/2006



Sobre este documento

linhas de comando e script relacionados a calculos.

Ambiente gráfico

Neste documento não tem dicas nem trata do uso de calculadoras em ambiente gráfico.

Tem muitas opções em interface gráfica, procure no seu gerenciador de pacotes por calc que deve listar varias opções.

No KDE tem uma excelente calculadora, faz parte do pacote:

kdeutils3 - KDE Utility Programs

depois de instalado, procure no menu ou pelo atalho ALT+F2 kcalc

bc - calculadora em linha de comando

Para instalar, procure pelo pacote bc.

Consulte a página do manual: man bc

Alguns exemplos de calculos em linha de comando e script.

Calculos em linha de comando, digite:

bc

depois digite a operação desejada e enter, exemplo:

  bc
  25+3+8
  36

Pra encerrar e sair do "bc" digite quit

Ou simplesmente digite:

echo 25+3+8 | bc

36

Outros exemplos

  echo 25+3-8 | bc
  echo 25/3+8 | bc
  echo 25*3-8 | bc

scale define as casas decimais, scale=2 para duas decimais, scale=4 pra 4 casas decimais e assim por diante, veja exemplo:

  echo 'scale=2; 20/3' | bc
  6.66
  echo 'scale=4; 20/3' | bc
  6.6666
  
  echo "scale=4; 20/3" | bc
  6.6666
  

Dica, quando recebe dados de outro comando, precisa incluir o sinal (+), awk, tr e outros inclue um sinal na ultima linha e provoca erro, até agora a solução que encontrei para contornar, adicionar um zero ou remover a ultima linha, exemplo com sed removemendo o sinal + da ultima linha (sed '$d')

colunas de arquivos

Este tópico está com erros, quando pronto removo este aviso.

  cat arquivo.txt
  SP lampadas 6.402 130.203    2.155,58     206,45
  RS fluoresc 6.402 130.215      816,45      79.13
  AC lampadas 6.102 129.452    4.421,85       0,00
  RO luminari 6.102 129.854    1.092,15       0,00

Somar os valores da coluna 5

awk -F" " '{print $5}' arquivo.txt >calcular.txt

sed -i "s/\.//g" calcular.txt

sed -i "s/\,/\./g" calcular.txt

for i in `cat calcular.txt` do MSOMA=$MSOMA$(printf "$i+") #MSOMA=$(echo $MSOMA$i) #echo 'scale=2; $MSOMA' | bc done #echo 'scale=2; echo $MSOMA' | bc echo $MSOMA | sed 's|+$||g' echo "$MSOMA"0 | bc echo $MSOMA

sed -i '$d' calcular.txt

echo 0 >> calcular.txt

awk -F" " '{print $5}' arquivo.txt >calcular.txt

awk -F" " '{printf"%s+\n",$5}' arquivo.txt >calcular.txt

awk -F" " '{printf"%s+\n",$1}' calcular.txt |sed '$'|sed '$d'| bc

awk -F" " '{printf"%s+\n",$1}' calcular.txt |sed '$d'| bc

cat calcular.txt | tr

awk -F" " '{printf"%s %s %14s%14s\n",$1,$3,$5,$6}'

awk -F" " '{printf"%s+\n",$5}' arquivo.txt |sed '$d'| bc

for i in `cat arquivo.txt` do awk -F" " '{printf"%s %s %14s%14s\n",$1,$3,$5,$6}' /tmp/teste/arquivo.txt > /tmp/teste/arqnovo.txt SOMA=`expr $SOMA + $i` done

raiz quadrada

Raiz quadrada de 144

echo "sqrt(144)" | bc

12

Exemplos em script

  #!/bin/bash
  raizcalc=$1
  raizq=`echo "sqrt($raizcalc)" | bc`
  echo "A raiz quadrada de $raizcalc é $raizq"
  
  sh raizq 625
  A raiz quadrada é 25

Crie um script como no exemplo acima, por exemplo com o nome de raizq, na linha de comando execute o script mais o numero que deseja obter a raiz quadrada, ex.:

sh raizq 625 ou ./raizq 625

  Resultado:
  sh raizq 625
  A raiz quadrada de 625 é 25
  
  ou:
  #!/bin/bash
  raizq=`echo "sqrt($1)" | bc`
  echo "A raiz quadrada é $raizq"
  
  sh raizq 625
  A raiz quadrada é 25

outros calculos

Exponenciação

    echo "5^2" | bc
  25
  
    echo "5^4" | bc
  625

expr

expr faz parte do pacote coreutils,

manual do expr veja em: man expr

Calculos com expr

Uso de expr

expr 25 \+ 3 \+ 8

36

Indicações

tutoriais em português.

O comando bc
http://www.dicas-l.com.br/dicas-l/20030728.php

Tudo o que você sempre quis saber sobre o comando bc mas ...
http://www.dicas-l.com.br/dicas-l/20030729.php

Página principal sobre script em geral (FAQ)
http://www.zago.eti.br/script/A-menu-scripts.html

Página principal deste site (FAQ)
http://www.zago.eti.br/menu.html