Eu quero comparar dois números com bc
. De acordo com esta resposta altamente cotada no StackOverflow , posso fazê-lo da seguinte maneira:
printf '%s\n' '1.2 > 0.4' | bc
bc
envia 1
para STDOUT, indicando que a declaração é verdadeira (teria retornado 0 se a declaração fosse falsa).
De acordo com a página POSIX parabc
:
Ao contrário de todos os outros operadores, os operadores relacionais ( '<', '>', "<=", ">=", "==", "!=" ) devem ser válidos apenas como objeto de um if, while, ou dentro de uma instrução for.
Talvez eu esteja interpretando mal, mas essa linguagem parece não permitir a sintaxe usada no exemplo acima.
O uso autônomo de operadores relacionais é bc
uma violação do POSIX? Se sim, como devo reescrever meu exemplo?
Esse exemplo assume GNU bc, que adiciona suas próprias extensões à linguagem bc. Conforme documentado em seu manual , você deve usar o
-s
switch para fazer com que ele processe a linguagem POSIX bc exata, ou o-w
switch se quiser avisar sobre extensões:obrigado @icarus pela versão mais curta e mais fácil para os olhos.