Я пишу простой калькулятор bash для класса и почти завершил его, но у меня возникают две проблемы:
Я использую аргумент if / then, чтобы попытаться справиться с ошибками деления на ноль. Продолжаю получать ошибку из этого раздела скрипта
Я использую python для возврата нецелых чисел, и он работает со всеми операциями, кроме деления. Я не уверен, почему эта одна конкретная операция не работает.
Я просмотрел все сообщения в верхней части экрана, а также запросил в Google несколько тегов на сайте stackoverflow.com и не нашел ничего, что помогло бы исправить любую из этих проблем. Если я нахожусь не на том форуме или на него уже был дан ответ - я впервые использую этот сайт - поэтому заранее прошу прощения.
Любое понимание было бы очень полезно. Заранее спасибо!
Вот разделы:
Проблема 1: если команда возвращает ошибку, как мне исправить ситуацию, чтобы она не выполняла деление на ноль?
if [ $n3 -eq 4 $$ $n2 -eq 0 ]
then
echo "Oops, cannot divide by zero. Your answer is undefined."
если
Конец первой проблемы.
Проблема 2: приведенное ниже уравнение не выводит нецелые числа (например, 1, разделенное на три, показывает 0, я хочу, чтобы было отображено 0,333 или подобное), почему?
4)
quotient=$(python -c "print $n1/$n2")
echo "The quotient of $n1 and $n2 is $quotient"
;;
Конец проблемной области 2.
*)
echo "Invalid Option. Pick a number between 1-4 for your operator."
;;
esac
Спасибо этому парню, если я ввожу 1 и делю на 3, получается 0. Я хочу получить 0,333 или эквивалент. С уважением, будет
А, ладно, вместо «приведенное ниже уравнение выводит нецелые числа» вы имели в виду «оно никогда не выводит нецелые числа»
Точно. Извините должно было быть более ясным. Я редактировал исходную ветку. Это кажется глючным, потому что, насколько я понимаю, это те же параметры, что и у остальных трех операций.
Считайте, что прикомандировано руководство "отдельный пост для каждой проблемы". Также см. Рекомендации минимальный воспроизводимый пример: Код в вопросе должен быть кратчайший возможный код, который действительно работает (без изменений), чтобы продемонстрировать проблему, которая находится в центре внимания этого вопроса. Если вы можете удалить print или жестко запрограммировать определенное значение вместо использования read, но проблема все еще возникает, вы должен удалите их.






Для вашего состояния вы использовали [ $n3 -eq 4 $$ $n2 -eq 0 ], где предположительно предполагали, что $$ будет &&. Вы можете сделать одно из следующих действий:
[ "$n3" -eq 4 ] && [ "$n2" -eq 0 ] # POSIX
[[ $n3 -eq 4 && $n2 -eq 0 ]] # Bash specific
Для другой вашей проблемы см. Почему Python возвращает 0 для простого вычисления деления?. Ты можешь сделать:
n1=1 n2=4
quotient=$(python -c "print $n1.0/$n2") # Becomes "print 1.0/4"
echo "$quotient" # Shows 0.25
Спасибо, и я оставлю это по одному вопросу для каждого поста в будущем. С уважением, w
Для №1 вы можете использовать
[ "$n3" -eq 4 ] && [ "$n2" -eq 0 ]вместо$$, но что вы подразумеваете под проблемой 2? Что он выводит и чего вы ожидали? (Кстати, SO лучше работает с одной проблемой на сообщение. См. Одно сообщение с несколькими вопросами или несколько сообщений?)