Fazendo comparações no shell com números de ponto flutuante

Publicado por Luciano Hanzo em 25/05/2024

[ Hits: 526 ]

 


Fazendo comparações no shell com números de ponto flutuante



Quando se trabalha com scripts em shell, pode ser necessário realizar comparações e operações com números de ponto flutuante. Entretanto, o shell padrão não lida bem com esses números diretamente, então precisamos usar a calculadora bc para essas operações.

Abaixo, temos um exemplo de script que realiza um loop utilizando números de ponto flutuante. Explicarei cada parte do script para que você possa entender como ele funciona e adaptá-lo conforme suas necessidades.

Script:

#!/bin/bash                                                                                                                             

# Fazendo comparações no shell, com números de ponto flutuante.
# Nesse exemplo, mostro como fazer um loop, com números de ponto flutuante.
# Repare que as variáveis estão com a primeira letra maiúscula.
                                                                                   
Nu=1.11144  # Inicializa a variável Nu com um valor de ponto flutuante                                                                         
Max=10.567  # Define o valor máximo para a comparação                                                                      

# Realiza uma comparação inicial usando bc e armazena o resultado na variável Cond.
Cond=$(bc <<< "$Nu < $Max")                                                     

# Enquanto a condição for verdadeira (Cond igual a 1), o loop continuará executando.
while [ $Cond == 1 ]; do                                                        
    echo "Número : $Nu"  # Exibe o valor atual de Nu                                                         
    # Incrementa Nu em 1.33 usando bc e atualiza o valor de Nu
    Nu=$(bc <<< "$Nu + 1.33")                                                   
    # Atualiza a condição para a próxima iteração do loop
    Cond=$(bc <<< "$Nu < $Max")                                                 
done

Explicação do Script

1. Inicialização das Variáveis:

  • Nu=1.11144: Define a variável Nu com um valor inicial de ponto flutuante.
  • Max=10.567: Define a variável Max como o valor limite para o loop.

2. Primeira Comparação:

  • Cond=$(bc <<< "$Nu < $Max"): Utiliza a calculadora bc para comparar Nu com Max. O resultado da comparação (1 para verdadeiro ou 0 para falso) é armazenado na variável Cond.

3. Loop While:

  • while [ $Cond == 1 ]; do: O loop continuará executando enquanto Cond for igual a 1 (ou seja, enquanto Nu for menor que Max).

    • echo "Número : $Nu": Exibe o valor atual de Nu no terminal.
    • Nu=$(bc <<< "$Nu + 1.33"): Incrementa Nu em 1.33 usando bc e atualiza o valor de Nu.
    • Cond=$(bc <<< "$Nu < $Max"): Recalcula a condição para a próxima iteração do loop.
Este exemplo mostra como é possível manipular números de ponto flutuante em scripts de shell utilizando a ferramenta bc. Adaptar este script às suas necessidades específicas permitirá que você realize operações matemáticas mais complexas diretamente no seu shell script.

Espero que esta dica tenha sido útil! Se tiver alguma dúvida ou sugestão, sinta-se à vontade para compartilhar nos comentários.
Outras dicas deste autor

OverWatch 2 - Abrindo portas do jogo no Iptables.

Leitura recomendada

Shell script no logon do openSUSE 11.3 para definir profile com configurações do wine e atalhos

Otimizando Digitação no Terminal Bash

Venha Conhecer o Yad

Highlighting: Destacando Códigos Bash Script no Eclipse

SED - salvar resultados em novo arquivo

  

Comentários
[1] Comentário enviado por maurixnovatrento em 23/06/2024 - 19:20h

Muito bom essa dica de shell.
______________________________________________________________________
Inscreva-se no meu Canal: https://www.youtube.com/@LinuxDicasPro
Repositório GitHub do Canal: https://github.com/LinuxDicasPro
Grupo do Telegram: https://t.me/LinuxDicasPro
Meu GitHub Pessoal: https://github.com/mxnt10



Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts