【问题标题】:bash: divide by zero error and dividing only shows integer answers [duplicate]bash:除以零错误,除以仅显示整数答案[重复]
【发布时间】:2018-09-18 19:58:18
【问题描述】:

我正在为课堂编写一个简单的 bash 计算器,并且几乎完成了,但我遇到了两个问题:

  • 我正在使用 if/then 参数来尝试处理除以零错误。我继续从脚本的这一部分收到错误

  • 我使用 python 返回非整数,它适用于除除以外的所有操作。我不确定为什么这一特定操作不起作用。

我查看了它在屏幕顶部给我的所有帖子,我还在谷歌上查询了 site:stackoverflow.com 的一些标签,但没有找到任何可以解决这些问题的东西。如果我在错误的论坛或已经回答 - 这是我第一次使用该网站 - 所以我提前道歉。

任何见解都会很有帮助。提前致谢!

以下是部分:

问题 1:如果命令返回错误,我将如何修复以使其在除以零时退出?

if [ $n3 -eq 4 $$ $n2 -eq 0 ]
    then
        echo "Oops, cannot divide by zero. Your answer is undefined."

如果

第一个问题结束。

问题2:下面的等式不输出非整数,(例如1除以3显示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,您可以使用[ "$n3" -eq 4 ] && [ "$n2" -eq 0 ] 而不是$$,但是问题2 是什么意思?它输出什么,你期望什么? (顺便说一句,SO 在每个帖子一个问题时效果更好。请参阅One post with multiple questions or multiple posts?
  • 感谢其他人,如果我输入 1 除以 3,它会得到 0。我希望它提供 .333 或等效值。亲切的问候,将
  • 啊,好吧,您的意思不是“下面的等式确实输出非整数”,而是“它从不输出非整数”
  • 没错。抱歉应该更清楚。我编辑了最初的线程。这似乎有问题,因为据我所知,它与其他三个操作的参数相同。
  • 考虑附议的“每个问题单独发布”指南。另请参阅minimal reproducible example 指南:问题中的代码应该是尽可能短的代码,它实际上可以工作(无需更改)以展示该问题所关注的问题。如果您可以取出prints,或者硬编码特定值而不是使用read,但问题仍然存在,您应该将它们取出。

标签: python bash shell


【解决方案1】:

对于您的情况,您使用了[ $n3 -eq 4 $$ $n2 -eq 0 ],您可能打算将$$ 设置为&&。您可以执行以下操作之一:

[ "$n3" -eq 4 ] && [ "$n2" -eq 0 ] # POSIX 
[[ $n3 -eq 4 && $n2 -eq 0 ]]       # Bash specific

对于您的其他问题,请参阅Why does Python return 0 for simple division calculation?。你可以这样做:

n1=1 n2=4
quotient=$(python -c "print $n1.0/$n2")  # Becomes "print 1.0/4"
echo "$quotient"                         # Shows 0.25

【讨论】:

  • 谢谢,以后我会在每个帖子中保留一个问题。问候, w
猜你喜欢
  • 2012-03-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多