bc no script não mostra decimais ao dividir

0

Eu fiz este script simples onde você perguntou o dividendo e o divisor, então ele exibe o quociente:

#!/bin/bash
read -p "Dividend? " dividend
read -p "Divisor? " divisor
    if [ $divisor = "0" ]
        then
            echo "∞"
    else
        echo "$((scale=4;$dividend / $divisor))" | bc
    fi

Mas se você digitar um divisor que não seja igual a 0, este erro de sintaxe será mostrado:

./division.sh: line 8: scale=4;5 / 4: syntax error: invalid arithmetic operator (error token is ";5 / 4")

Eu não sei porque isso não funciona, eu vi em um fio esta é a maneira de obter decimais com bc. Alguém sabe o que há de errado? Agradecemos antecipadamente.

    
por Community 04.03.2017 / 12:26

1 resposta

1

Como você está usando bc para o cálculo, não é necessário usar a expansão aritmética bash ( $((...)) ).
Além disso, a sintaxe da sua expansão aritmética está errada, pois ; não é um operador aritmético. Em segundo lugar, esse método só pode gerar inteiros.

O script correto ficaria assim:

#!/bin/bash
read -p "Dividend? " dividend
read -p "Divisor? " divisor
    if [ $divisor = "0" ]
        then
            echo "∞"
    else
        echo "scale=4;$dividend / $divisor" | bc
    fi
    
por Thomas 04.03.2017 / 13:05