Operação aritmética bash

Operação aritmética bash
Fazer operações aritméticas em Bash não é semelhante a outras linguagens de programação padrão. Uma das limitações do Bash é que ele não pode lidar com o ponto flutuante ou números duplos como outras linguagens de script. Outra ferramenta de comando é usada no Bash para resolver este problema. Diferentes tipos de operações aritméticas são mostradas neste tutorial usando diferentes exemplos.

Exemplo - 1: Usando o comando 'expr'

O comando mais antigo para fazer operações aritméticas em Bash é 'expr'. Este comando pode funcionar apenas com valores inteiros e imprime a saída diretamente no terminal. Você tem que usar o espaço a cada operando quando quiser usar o 'expr'Comando para fazer quaisquer operações matemáticas. Crie um arquivo bash chamado expr.Bash com o script a seguir para saber o uso de 'exprComando.

#!/BIN/BASH
# Funciona como a string
expr '10 + 30 '
# Funciona como a string
Expr 10+30
#Performa a adição
Expr 10 + 30
#Cados o valor do restante
expr 30 % 9
#Using Expr com backtick
myval1 = 'expr 30/10'
eco $ myval1
#Using Expr dentro do substituto do comando
myval2 = $ (expr 30 - 10)
eco $ myval2

Execute o seguinte comando para executar o script.

$ Bash Expr.Bash

Saída:
A saída mostra que os operadores aritméticos funcionaram apenas quando o espaço é usado com cada valor numérico e nenhuma citação é usada com o expr comando. Você também pode atribuir a saída do expr comando em uma variável e imprima a variável posteriormente usando Backtick ou substituto de comando. 30/10 é calculado usando Backtick e 30-10 é calculado usando substituto de comando.

Exemplo - 2: Usando o comando 'Let'

'deixar' é outro comando embutido para fazer operações aritméticas em bash. 'deixar' O comando não pode imprimir a saída para o terminal sem armazenar o valor em uma variável. Mas o 'deixe' O comando pode ser usado para remover as outras limitações do 'Expr' comando. Crie um arquivo bash chamado deixar.Bash com o seguinte script para saber o uso do 'deixar' comando.

#!/BIN/BASH
# Multiplicando 9 por 8
Seja val1 = 9*3
eco $ val1
# Dividindo 8 por 3
Seja "Val2 = 8/3"
eco $ val2
# Subtraindo 3 de 9
Seja Val3 = 9-3
eco $ val3
# Aplicando incremento
Deixe Val4 = 7
Deixe Val4++
eco $ val4
# Usando o valor do argumento na operação aritmética
Seja "Val5 = 50+$ 1"
eco $ val5

Execute o seguinte comando para executar o script.

$ bash let.Bash 50

Saída:

A saída mostra que o 'deixe' O comando é mais flexível que o 'exprComando. Você pode avaliar qualquer expressão aritmética com ou sem citações. Mas você não pode usar espaço em qualquer expressão matemática. O operador de incremento ou decréscimo pode ser usado no 'deixarComando. Como a operação aritmética pode ser feita com os valores de argumento usando o 'deixar'O comando é mostrado na última parte do exemplo.

Exemplo - 3: Usando suportes duplos

Qualquer operação aritmética pode ser feita no Bash sem usar nenhum comando. Aqui, suportes duplos são usados ​​para realizar as tarefas aritméticas, e o uso de colchetes duplos para executar expressões matemáticas é mais flexível do que o comando como o 'expr' ou 'deixar'. Crie um arquivo bash chamado dbl.Brash com o script a seguir para testar as operações aritméticas usando suportes duplos.

#!/BIN/BASH
# Calcule a expressão matemática
val1 = $ ((10*5+15))
eco $ val1
# Usando o operador de postagem ou pré -incremento/decréscimo
((Val1 ++))
eco $ val1
val2 = 41
((--val2))
eco $ val2
# Usando o operador abreviado
((Val2 += 60))
eco $ val2
# Dividindo 40 por 6
((Val3 = 40/6))
eco $ val3

Execute o seguinte comando para executar o script.

$ Bash dbl.Bash

Saída:

A saída mostra que os colchetes duplos podem executar qualquer expressão matemática com espaço ou sem espaço e você também pode usar operadores de incremento/decréscimo e abreviação em expressões de duplo colchetes.

Exemplo - 4: Usando o comando 'BC' para flutuação ou números duplos

Uma das principais limitações das maneiras acima de fazer operações aritméticas em Bash é que 'expr' ou 'deixar' ou Suportes duplos Expressões não são capazes de produzir pontos flutuantes ou números duplos. A saída das operações de divisão dos exemplos acima são inteiros. 'bc'O comando pode ser usado para resolver esse problema e funciona como uma calculadora básica para o sistema operacional Linux. Crie um arquivo bash chamado bc.Bash com o script a seguir para saber o uso de o 'BC' comando em operações aritméticas.

#!/BIN/BASH
# Dividindo 55 por 3 apenas com BC
eco "55/3" | bc
# Dividindo 55 por 3 com opção BC e -l
eco "55/3" | bc -l
# Dividindo 55 por 3 com BC e valor de escala
eco "escala = 2; 55/3" | bc

Execute o seguinte comando para executar o script.

$ Bash bc.Bash

Saída:
A saída mostra que o simples 'bc'O comando produz valor inteiro como outras opções quando qualquer expressão de divisão é executada. 'bc -l'O comando gera a saída exata da divisão e você pode limitar a parte fracionária usando escala valor. Aqui, Escala = 2 é usado. Portanto, a saída mostra 2 dígitos após o ponto decimal.

Exemplo 5: Usando o comando printf para flutuação ou número duplo

O 'printf'Comando é outra maneira de trabalhar com dados fracionários. Este comando pode ser usado para gerar o valor do ponto flutuante com mais eficiência do que o comando 'BC' após a operação aritmética. Este comando também pode ser usado para calcular o poder de um número. Os usos do 'printf'Comando para diferentes operações aritméticas mostrou neste exemplo. Crie um arquivo bash chamado prn.Bash com o script a seguir para verificar o uso do comando 'printf' para a saída fracionária da divisão de dois números.

#!/BIN/BASH
# Pegue o valor de dividendos do usuário
Leia -P "Digite o valor de dividendo:" N1
# Pegue o valor do divisor do usuário
Leia -P "Digite o valor do divisor:" n2
# Encontre a divisão usando 'eco' e 'bc'
eco "escala = 2; $ n1/$ n2" | bc
# Encontre a divisão usando 'printf'
printf "%.2f \ n "" $ ((10 ** 2*$ n1/$ n2)) e-2 "

Execute o seguinte comando para executar o script.

$ bash prn.Bash

Saída:
A saída a seguir mostra que o valor da divisão gerado pelos comandos 'BC' e 'printf' de dois números inteiros são os mesmos.

A saída a seguir mostra que quando o valor de dividendo é um número de ponto flutuante, o valor da divisão gerado pelo comando 'BC' está correto, mas o comando 'printf' gerou um erro.

Crie um arquivo bash chamado prn2.Bash com o script a seguir para saber o uso do comando 'printf' para a saída fracionária correta quando o valor de dividendo é um número de ponto flutuante.

#!/BIN/BASH
# Pegue o valor de dividendos do usuário
Leia -P "Digite o valor de dividendo:" N1
# Pegue o valor do divisor do usuário
Leia -P "Digite o valor do divisor:" n2
# Encontre a divisão usando 'printf', 'echo' e 'bc'
printf "%.2f \ n "'eco $ n1/$ n2 | bc -l'

Execute o seguinte comando para executar o script.

$ Bash PRN2.Bash

Saída:
A saída mostra que o 'printf' com o comando "BC" gera a saída correta.

Exemplo 6: Usando o comando AWK para operação aritmética

Usando o comando 'awk' é outra maneira de executar a operação aritmética que pode gerar saída corretamente para números de ponto flutuante. As operações aritméticas usando o comando 'awk' sem formatação e com formatação mostraram neste exemplo. Crie um arquivo bash chamado Awk.Bash com o script a seguir para verificar o uso do comando 'awk' para operação aritmética.

#!/BIN/BASH
# Inicialize o valor de dividendo
n1 = 90
# Inicialize o valor do divisor
n2 = 43
# Imprima a saída sem se formar
Awk "Begin print $ n1/$ n2"
# Imprima a saída com formatação
Awk "Begin printf"%.2f \ n ", $ n1/$ n2"

Execute o seguinte comando para executar o script.

$ Bash Awk.Bash

Saída:
A saída mostra que o comando 'awk' pode gerar saída fracionária apropriada.

Exemplo 7: Calcule a porcentagem de um valor

Às vezes precisamos calcular o valor percentual de critérios específicos. A porcentagem pode ser calculada em Bash usando o comando 'printf' e o comando 'eco'. Suponha que precisamos descobrir a porcentagem de alunos passados ​​em um exame com base no número total de alunos e nos alunos passados. A solução para esse problema mostrou neste exemplo. Crie um arquivo bash com o seguinte script para calcular o valor percentual dos alunos aprovados usando o comando 'printf'.

#!/BIN/BASH
# Pegue o número total de estudantes do usuário
Leia -P "Número total de alunos:" Total_Std
# Pegue o número total de alunos passados ​​do usuário
Leia -P "Número total de alunos aprovados:" Passed_Std
# Calcule a porcentagem de alunos aprovados
printf "A porcentagem de alunos passados: %.2f %% \ n "" $ ((10 ** 3 * 100 * $ passed_std/$ total_std)) e-3 "

Execute o seguinte comando para executar o script.

$ porcentagem de bash.Bash

Saída:
A produção mostra a porcentagem de alunos que passam com base no número total de estudantes e passou os alunos.

Conclusão

Os usos de diferentes operadores aritméticos em Bash e as maneiras de executar as operações aritméticas usando comandos diferentes mostraram neste tutorial usando vários exemplos para ajudar os usuários do Bash.