Я сделал этот простой сценарий, где Вас спрашивают дивиденд и делитель, затем он отображает частное:
#!/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")
Я не знаю, почему это не работает, я видел в потоке, это - способ, с которым Вы получаете десятичные числа до н.э. Кто-либо знает что случилось?Заранее спасибо.
Так как Вы используете 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