Pular para o conteúdo

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

Dica publicada em Shell Script / Introdução
Luciano Hanzo lucianohanzo
Hits: 1.145 Categoria: Shell Script Subcategoria: Introdução
  • Indicar
  • Impressora
  • Denunciar
O Viva o Linux depende da receita de anúncios para se manter. Ative os cookies aqui para nos patrocinar.
Não conseguimos carregar os anúncios. Se usa bloqueador, considere liberar o Viva o Linux para nos patrocinar.

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).

    O Viva o Linux depende da receita de anúncios para se manter. Ative os cookies aqui para nos patrocinar.
    Não conseguimos carregar os anúncios. Se usa bloqueador, considere liberar o Viva o Linux para nos patrocinar.
    • 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.
O Viva o Linux depende da receita de anúncios para se manter. Ative os cookies aqui para nos patrocinar.
Não conseguimos carregar os anúncios. Se usa bloqueador, considere liberar o Viva o Linux para nos patrocinar.

OverWatch 2 - Abrindo portas do jogo no Iptables.

Onde está a linha que preciso editar? [Resolvido]

Desligar o PC após concluir download (Chrome e Chromium)

Capturando os últimos artigos do VivaoLinux

Apagar linhas comentadas de arquivos

Desligamento automático para conexão discada

Contribuir com comentário

Entre na sua conta para comentar.