ti-enxame.com

Por que estou recebendo um erro de sintaxe com o meu shell aritmético?

Eu tenho um problema com um script shell linux (sh).

Estou tentando escrever um script que calcula combinações, mas acho que fico transbordando ao tentar calcular as faculdades. Então, estou tentando outra técnica. Nesta técnica eu usei isso:

a=`expr $var1 \* $var2 / $var3`

Isso está dando erros e de forma rápida, não posso fazer isso:

a=`expr ($var1 \* $var2) / $var3`

porque isso também dá erros.

Como eu faço isso?

5
3sdmx

Você pode usar dc para resultados de precisão arbitrária:

precision=4 var1=3 var2=4 var3=5
a=`echo "$precision k $var1 $var2 * $var3 /p" | dc`

deve funcionar em cada variante do UNIX desde 1977 ou mais. Se você sabe que tem gnu dc disponível mais conciso

a=`dc -e "$precision k $var1 $var2 * $var3 /p"`

pode ser usado.

6
msw