<Anterior | Conteúdo | Próxima>
(()) - Projetado para inteiros
Além do [[]] comando composto, bater também fornece o (()) comando composto, que é útil para operar em inteiros. Ele oferece suporte a um conjunto completo de avaliações aritméticas, um assunto que abordaremos totalmente no Capítulo 34.
(()) é usado para realizar testes de verdade aritmética. Um teste de verdade aritmética resulta em verdadeiro se o resultado da avaliação aritmética for diferente de zero.
[me @ linuxbox ~] $ if ((1)); em seguida, echo "É verdade."; fi
É verdade.
[me @ linuxbox ~] $ if ((0)); em seguida, echo "É verdade."; fi
[me @ linuxbox ~] $
[me @ linuxbox ~] $ if ((1)); em seguida, echo "É verdade."; fi
É verdade.
[me @ linuxbox ~] $ if ((0)); em seguida, echo "É verdade."; fi
[me @ linuxbox ~] $
utilização (()), podemos simplificar ligeiramente o teste-integer2 script como este:
#! / Bin / bash
# test-integer2a: avalia o valor de um inteiro.
INT = -5
if [["$ INT" = ~ ^ -? [0-9] + $]]; então se ((INT == 0)); então
echo "INT é zero."
outro
if ((INT <0)); então
echo "INT é negativo."
outro
echo "INT é positivo."
fi
if ((((INT% 2)) == 0)); então
echo "INT é par."
outro
echo "INT é estranho."
fi
#! / Bin / bash
# test-integer2a: avalia o valor de um inteiro.
INT = -5
if [["$ INT" = ~ ^ -? [0-9] + $]]; então se ((INT == 0)); então
echo "INT é zero."
outro
if ((INT <0)); então
echo "INT é negativo."
outro
echo "INT é positivo."
fi
if ((((INT% 2)) == 0)); então
echo "INT é par."
outro
echo "INT é estranho."
fi
echo "INT não é um número inteiro." > & 2 saída 1
fi
echo "INT não é um número inteiro." > & 2 saída 1
fi
Observe que usamos sinais de menor e maior e que == é usado para testar a equivalência. Esta é uma sintaxe de aparência mais natural para trabalhar com inteiros. Observe também que, porque o comando composto (()) faz parte da sintaxe do shell ao invés de um comando comum, e lida apenas com inteiros, é capaz de reconhecer variáveis pelo nome e não requer que a expansão seja realizada. Vamos discutir (()) e a expansão aritmética relacionada mais adiante no Capítulo 34.