до н.э в сценарии не показывает десятичные числа при делении

Я сделал этот простой сценарий, где Вас спрашивают дивиденд и делитель, затем он отображает частное:

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

Но если Вы вводите делитель, который не равняется 0 этим синтаксическим ошибкам, показан:

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

Я не знаю, почему это не работает, я видел в потоке, это - способ, с которым Вы получаете десятичные числа до н.э. Кто-либо знает что случилось?Заранее спасибо.

0
задан 13 April 2017 в 05:23

1 ответ

Так как Вы используете bc для вычисления, нет никакой потребности использовать bash арифметическое расширение ($((...))).
, Кроме того, синтаксис Вашего арифметическое расширение является неправильным, поскольку ; не арифметический оператор. Во-вторых, этот метод только может произвести целые числа.

корректный сценарий был бы похож следующим образом.

#!/bin/bash
read -p "Dividend? " dividend
read -p "Divisor? " divisor
    if [ $divisor = "0" ]
        then
            echo "∞"
    else
        echo "scale=4;$dividend / $divisor" | bc
    fi
1
ответ дан 3 November 2019 в 16:29

Другие вопросы по тегам:

Похожие вопросы: