Bash Scripting: dominando operações aritméticas
As operações aritméticas são um aspecto fundamental do script bash, permitindo que os scripts realizem cálculos, automatizem tarefas e tomem decisões com base em dados numéricos. Bash fornece uma variedade de métodos para realizar operações aritméticas, desde simples adição e subtração até cálculos mais complexos, como operações de ponto flutuante e manipulação de números científicos. Este tutorial irá guiá-lo através de diferentes técnicas e fornecer exemplos práticos para aprimorar suas habilidades de script bash.
Neste tutorial você aprenderá:
- Operações aritméticas básicas no Bash
- Usando ferramentas externas para cálculos avançados
- Aplicando Aritmética em Loops e Declarações Condicionais
- Tratamento de números de ponto flutuante e notação científica
Compreendendo as operações aritméticas do Bash
Bash oferece suporte a várias operações aritméticas. Começaremos com operações básicas e depois passaremos para exemplos mais avançados, demonstrando como o Bash pode ser usado para scripts eficientes e eficazes.
Adição Básica
#!/bin/bash a=10 b=5 sum=$((a + b)) echo "Sum: $sum"
Este script Bash executa uma operação aritmética simples: adição. A primeira linha
a=10
atribui o valor 10 à variávela
. Da mesma forma, a segunda linhab=5
atribui o valor 5 à variávelb
. A terceira linhasum=$ ((a + b))
calcula a soma dos valores mantidos ema
eb
usando a aritmética sintaxe de expansão$ (( ))
e atribui o resultado à variávelsoma
. A última linhaecho "Sum: $sum"
usa o comandoecho
para imprimir o texto “Sum: ” seguido do valor dasum
variável, exibindo efetivamente o resultado da adição (15 neste caso) no console. Este script é um exemplo básico de como usar variáveis e aritmética no Bash para realizar e exibir o resultado de um cálculo.Subtração
#!/bin/bash a=10 b=5 difference=$((a - b)) echo "Difference: $difference"
Este script Bash calcula a diferença entre dois números. A linha
a=10
atribui o valor 10 à variávela
. A próxima linhab=5
atribui o valor 5 à variávelb
. O script então executa uma operação de subtração comdifference=$ ((a - b))
, que subtrai o valor deb
dea
e atribui o resultado (5 neste caso) à variáveldiferença
.Finalmente, o script usa o comando
echo
emecho "Difference: $difference"
para imprimir a frase “Difference: ” seguida da diferença calculada (5). Este é um exemplo simples de execução e exibição do resultado de uma operação aritmética básica no Bash.Multiplicação
#!/bin/bash a=10 b=5 product=$((a * b)) echo "Product: $product"
Este script Bash calcula a diferença entre dois números. A linha
a=10
atribui o valor 10 à variávela
. A próxima linhab=5
atribui o valor 5 à variávelb
. O script então executa uma operação de subtração comdifference=$ ((a - b))
, que subtrai o valor deb
dea
e atribui o resultado (5 neste caso) à variáveldiferença
.Por último, o script usa o comando
echo
emecho "Difference: $difference"
para imprimir a frase “Difference: ” seguida da diferença calculada (5). Este é um exemplo simples de execução e exibição do resultado de uma operação aritmética básica no Bash.-
Divisão
#!/bin/bash a=10 b=5 quotient=$((a / b)) echo "Quotient: $quotient"
Este script Bash calcula o quociente de dois números e exibe o resultado. O script define o valor de
a
como 10 eb
como 5. A expressãoquotient=$ ((a/b))
executa divisão inteira dea
porb
e atribui o resultado à variávelquociente
. Comoa
eb
são números inteiros, ea
é 10 enquantob
é 5, a divisão produz um número inteiro quociente de 2.A linha final
echo "Quotient: $quotient"
usa o comandoecho
para imprimir o texto “Quotient: ” seguido pelo valor doquoient
variável. Neste caso, exibe “Quociente: 2” no console. Este script é um exemplo simples de como realizar divisão no Bash. Operação de módulo
#!/bin/bash a=15 b=4 modulus=$((a % b)) echo "Modulus: $modulus"
Este script Bash calcula o módulo (resto da divisão) de dois números e exibe o resultado. A primeira linha
a=15
atribui o valor 15 à variávela
. A segunda linhab=4
atribui o valor 4 à variávelb
. O script então executa a operação de módulo commodulus=$ ((a % b))
, que calcula o resto quandoa
é dividido porb
. Para os valores fornecidos, o restante da divisão de 15 por 4 é 3, então este é o valor atribuído aomódulo
.O script gera o resultado usando
echo "Modulus: $modulus"
, que imprime a string “Modulus: ” seguida pelo valor demodulus
(3 neste caso) para o console. Isso demonstra o uso do operador módulo no Bash para encontrar o restante de uma operação de divisão.Incrementando uma variável
#!/bin/bash counter=0 ((counter++)) echo "Incremented value: $counter"
Este script Bash demonstra como incrementar (aumentar em um) o valor de uma variável. O script começa definindo
counter
como 0 comcounter=0
. A próxima linha,((counter++))
, é uma expressão aritmética que incrementa o valor decounter
. Neste contexto,++
é um operador pós-incremento, o que significa que aumenta o valor decounter
em 1.Após esta operação, o valor de
counter
passa a ser 1. Por fim, o script exibe o valor incrementado usandoecho "Incremented value: $counter"
. Este comando imprime a string “Valor incrementado:” seguida pelo valor atual decounter
, que é 1. Este exemplo é uma demonstração simples do uso de expressões aritméticas para incrementar o valor de uma variável no Bash.Decrementando uma variável
#!/bin/bash counter=10 ((counter--)) echo "Decremented value: $counter"
Este script Bash demonstra como diminuir (diminuir em um) o valor de uma variável. O script inicializa a variável
counter
com o valor 10 usandocounter=10
. A próxima linha,((counter--))
, emprega uma expressão aritmética que usa o operador pós-decremento--
para reduzir o valor decounter
por 1. Após esta operação, o valor decounter
passa a ser 9.A última linha do script,
echo "Decremented value: $counter"
, usa o comandoecho
para imprimir a string “Decremented value: ” seguida pelo valor atualizado de < código>contador. Neste caso, exibe “Valor decrementado: 9” no console. Este exemplo ilustra o uso de expressões aritméticas no Bash para diminuir o valor de uma variável.Operação elétrica
#!/bin/bash base=2 exponent=3 power=$((base**exponent)) echo "Power: $power"
Este script Bash calcula a potência de um número e exibe o resultado. O script começa atribuindo o valor 2 à variável
base
e o valor 3 à variávelexpoente
usando as linhasbase=2
eexpoente=3
, respectivamente. A próxima linha,power=$ ((base**exponent))
, executa a operação de potência: ela elevabase
aoexpoente
, que neste caso calcula 2 elevado à potência de 3.O resultado deste cálculo, que é 8, é então armazenado na variável
power
. Finalmente, o script gera este resultado com o comandoecho "Power: $power"
, que imprime a string “Power: ” seguida pelo valor depower
(8 neste caso) para o console. Este exemplo mostra como realizar a exponenciação em um script Bash.Usando expr para adição
#!/bin/bash a=10 b=5 sum=$(expr $a + $b) echo "Sum: $sum"
Este script Bash calcula a soma de dois números usando o comando
expr
, que é um utilitário externo para realizar operações aritméticas básicas. A primeira linhaa=10
atribui o valor 10 à variávela
. A segunda linhab=5
atribui o valor 5 à variávelb
.A operação da chave é realizada na linha
sum=$ (expr $a + $b)
. Aqui,expr $a + $b
calcula a soma dos valores armazenados ema
eb
. A sintaxe$ (...)
é a substituição de comando, que captura a saída do comandoexpr
e a atribui à variávelsum
. Portanto,sum
conterá o valor 15, que é o resultado da adição de 10 e 5.A linha final
echo "Sum: $sum"
imprime o resultado usando o comandoecho
. Ele exibe a string “Sum:” seguida pelo valor desum
, mostrando efetivamente “Sum: 15” no console. Este script é um exemplo prático de uso do comandoexpr
para operações aritméticas no Bash.Comparando Números em Declarações Condicionais
#!/bin/bash a=10 b=20 if ((a > b)); then echo "$a is greater than $b" elif ((a < b)); then echo "$a is less than $b" else echo "$a is equal to $b" fi
Este script Bash demonstra como usar comparações aritméticas dentro de uma estrutura condicional if-elif-else para comparar dois números. O script começa atribuindo os valores 10 e 20 às variáveis
a
eb
, respectivamente, usandoa=10
eb= 20
.A instrução condicional começa com
if ((a > b)); então
. Isso verifica sea
é maior queb
. Comoa
(10) não é maior queb
(20), esta condição é avaliada como falsa e o script não executa o comandoecho "$a is maior que $b"
dentro deste bloco.O script então passa para o
elif ((a < b)); então
parte. Isso verifica sea
é menor queb
. Neste caso, a condição é verdadeira (já que 10 é menor que 20), então o script executa o comandoecho "$a is less than $b"
, que imprime “10 is less than 20” para o console.Se
a
fosse igual ab
, nem as condiçõesif
nemelif
teriam sido atendidas, e o script teria executado o blocoelse
final, imprimindo “$a é igual a $b”.O
fi
marca o fim da instrução condicional. Este script demonstra efetivamente lógica condicional e comparação aritmética no Bash.Loop com operações aritméticas
#!/bin/bash for ((i = 1; i <= 5; i++)); do echo "Number $i" done
Este script Bash demonstra um loop for que itera através de uma sequência de números. O loop é inicializado com
for ((i=1; i <= 5; i++));
, ondei
é definido para iniciar em 1, a condiçãoi <= 5
garante que o loop continue enquantoi
for menor ou igual a 5, ei++
incrementai
em 1 em cada iteração. Dentro do loop, é executado o comandoecho "Number $i"
, que imprime o valor atual dei
prefixado com “Number “. O loop irá iterar cinco vezes, imprimindo “Número 1”, “Número 2”,…, até “Número 5”. Após a quinta iteração, quandoi
se torna 6, a condiçãoi <= 5
se torna falsa, encerrando o loop.Aritmética de ponto flutuante com bc
#!/bin/bash a=10.5 b=5.2 sum=$(echo "$a + $b" | bc) echo "Sum: $sum"
Este script Bash calcula a soma de dois números de ponto flutuante usando o utilitário
bc
, que é uma calculadora de linha de comando capaz de realizar aritmética com números decimais. O script começa atribuindo os valores 10.5 e 5.2 às variáveisa
eb
, respectivamente, usandoa=10.5
eb= 5.2
.A operação chave é
sum=$ (echo "$a + $b" | bc)
. Esta linha usaecho
para enviar a expressão “$a + $b” (que se expande para “10,5 + 5,2”) parabc
através de um canal|
. O programabc
então calcula a soma desses números. O resultado deste cálculo é capturado e atribuído à variávelsum
através da substituição do comando$ (...)
.Finalmente, o script usa
echo "Sum: $sum"
para imprimir o resultado. Ele exibe a string “Sum:” seguida pelo valor desum
, mostrando efetivamente “Sum: 15.7” no console. Este exemplo ilustra como lidar com aritmética de ponto flutuante no Bash usando o comandobc
.Cálculo de raiz quadrada
number=16 sqrt=$(echo "scale=2; sqrt($number)" | bc -l) echo "Square root of $number: $sqrt"
Este script Bash calcula a raiz quadrada de um número usando o utilitário
bc
, que é uma calculadora de linha de comando. O script atribui o valor 16 à variávelnumber
comnumber=16
. A operação chave,sqrt=$ (echo "scale=2; sqrt($number)" | bc -l)
, usaecho
para enviar o comandosqrt($number)
(que se tornasqrt(16)
) parabc
, especificando uma escala de 2 para obter o resultado com duas casas decimais. O comandobc -l
invocabc
com a biblioteca matemática padrão, que é necessária para a função de raiz quadrada. A raiz quadrada calculada, 4,00, é então armazenada na variávelsqrt
. Finalmente,echo "Square root of $number: $sqrt"
imprime o resultado, exibindo “Square root of 16: 4.00”.Logaritmo natural com bc
#!/bin/bash number=7 ln=$(echo "l($number)" | bc -l) echo "Natural logarithm of $number: $ln"
Este script Bash calcula o logaritmo natural de um número usando o utilitário
bc
, que é aprimorado com a opção-l
para incluir a biblioteca matemática padrão necessária para cálculos logarítmicos. O script começa atribuindo o valor 7 à variávelnumber
usandonumber=7
. A operação chave,ln=$ (echo "l($number)" | bc -l)
, envia o comandol($number)
(que se tornal(7)
) parabc
. Este comando calcula o logaritmo natural (base e) de 7.O resultado deste cálculo é capturado e armazenado na variável
ln
usando a substituição do comando$ (...)
. Finalmente, o script usaecho "Natural logarithm of $number: $ln"
para imprimir o resultado, exibindo o logaritmo natural de 7, formatado como um número de ponto flutuante.Tratando números científicos com awk
#!/bin/bash sum=$(awk 'BEGIN {print (1.23e2 + 3.45e3)}') echo "Sum: $sum"
Este script Bash calcula a soma de dois números em notação científica usando
awk
, uma poderosa ferramenta de processamento de texto e computação aritmética. O comandosum=$ (awk 'BEGIN {print (1.23e2 + 3.45e3)}')
usaawk
para realizar a adição de1.23e2
(que é 1,23×102 ou 123) e3.45e3
(que é 3,45×103, ou 3450).O bloco
BEGIN
no comandoawk
garante que o cálculo seja feito imediatamente, sem a necessidade de qualquer entrada. O resultado desta adição, 3573, é então capturado e armazenado na variávelsum
através da substituição do comando$ (...)
. Finalmente, o script gera esse resultado usandoecho "Sum: $sum"
, que exibe a string “Sum: ” seguida pelo valor desum
(3573 neste caso) para o console. Este exemplo mostra comoawk
pode ser usado para operações aritméticas, especialmente com números em notação científica.Calculando a contagem de linhas do arquivo
#!/bin/bash file="example.txt" line_count=$(wc -l < "$file") echo "The file $file has $line_count lines."
Este script Bash conta o número de linhas em um arquivo e exibe o resultado. O script define a variável
file
com o nome do arquivo a ser processado, “example.txt”, usandofile="example.txt"
. Em seguida, ele usa o comandoline_count=$ (wc -l < "$file")
para contar as linhas.O comando
wc -l
conta o número de linhas no arquivo, e o redirecionamento< "$file"
alimenta o conteúdo do arquivo emwc
. O resultado desta contagem de linhas é armazenado na variávelline_count
. Por fim, o script gera a contagem de linhas usandoecho "O arquivo $file possui $line_count linhas."
, exibindo uma mensagem com o número de linhas em “example.txt”.Cálculo de área
#!/bin/bash length=10 width=5 area=$((length * width)) echo "The area of the rectangle is ${area} square units"
Este script Bash calcula a área de um retângulo e exibe o resultado. O script atribui o valor 10 à variável
comprimento
e 5 àlargura
, representando as dimensões do retângulo. A linhaarea=$ ((length * width))
realiza uma operação aritmética para calcular a área multiplicando o comprimento e a largura, armazenando o resultado (50 neste caso) na variávelárea
.Finalmente, o script usa
echo "A área do retângulo é $ {area} unidades quadradas"
para imprimir a área calculada. Esta mensagem exibe “A área do retângulo é 50 unidades quadradas”, mostrando efetivamente o resultado da multiplicação como a área do retângulo em unidades quadradas. Este exemplo demonstra o uso básico de aritmética e variáveis em um cenário prático no Bash.Usando let para aritmética
#!/bin/bash a=10 b=5 let sum=a+b echo "Sum: $sum"
Este script Bash calcula a soma de dois números usando o comando
let
, uma função integrada para operações aritméticas. O script define as variáveisa
eb
como 10 e 5, respectivamente, coma=10
eb=5
. O comandolet sum=a+b
realiza então a adição dea
eb
, atribuindo o resultado (15) à variávelsoma
. Por fim, o script usaecho "Sum: $sum"
para imprimir a soma, exibindo “Sum: 15” no console.
Conclusão
Dominar as operações aritméticas em scripts Bash abre um mundo de possibilidades para automatizar tarefas e processar dados numéricos. Esteja você realizando cálculos simples ou operações complexas envolvendo números de ponto flutuante e notação científica, o Bash fornece as ferramentas e a flexibilidade necessárias para scripts eficazes. Ao incorporar esses exemplos em seus scripts, você pode aprimorar sua funcionalidade e eficiência.
Perguntas frequentes: Bash Arithmetic Essentials
- O que é script Bash? O script Bash é um método para automatizar tarefas em sistemas operacionais do tipo Unix usando o shell Bash.
- Como faço a adição no Bash? Use
sum=$ ((a + b))
para adicionar variáveisa
eb
. - O Bash consegue lidar com aritmética de ponto flutuante? Sim, usando ferramentas externas como
bc
ouawk
. - Para que é usado o comando
expr
? O comandoexpr
executa operações aritméticas básicas, como adição e multiplicação. - Como incrementar uma variável no Bash? Use
((variable++))
para incrementar o valor de uma variável. - O que
$ ((expressão))
faz no Bash? Esta sintaxe realiza expansão aritmética com a expressão fornecida. - Como calcular o módulo no Bash? Use
modulus=$ ((a % b))
para calcular o módulo. - É possível calcular a potência no Bash? Sim, use
power=$ ((base**exponent))
para cálculos de potência. - Como posso comparar dois números no Bash? Use instruções condicionais como
if ((a > b))
para comparação. - O Bash pode realizar operações de loop com aritmética? Sim, os loops for podem incorporar operações aritméticas, por exemplo,
for ((i=1; i <= 5; i++))
. - Como calcular a raiz quadrada no Bash? Use
sqrt=$ (echo "scale=2; sqrt($number)" | bc -l)
combc
. - Qual é a função do comando
let
? O comandolet
é usado para atribuições aritméticas no Bash. - Como encontrar o número de linhas em um arquivo? Use
line_count=$ (wc -l < "$file")
para contar linhas em um arquivo. - Como calcular a área no Bash? Use
area=$ ((length * width))
para calcular a área de um retângulo. - O script Bash pode lidar com notação científica? Sim, com a ajuda de ferramentas como
awk
, por exemplo,awk 'BEGIN {print (1.23e2 + 3.45e3)}'
.