【问题标题】:if else dividing in BASH [duplicate]如果否则在 BASH 中划分 [重复]
【发布时间】:2016-04-27 16:04:40
【问题描述】:

我正在用 bash 做学校作业,得到了这个代码:

if a < 0
    a = a/b
else
    a = b/a
fi

作业说我们需要将键盘读取的两个数字相除,并检查第一个数字是否大于数字0。

echo "Write two numbers, with a space, that need to be divided:"
read a b
  if a > 0
    a = $a / $b
  else
    a = $b / $a
fi

echo "$a"

我在这里做错了什么?

【问题讨论】:

  • = 周围不能有空格,否则 bash 会尝试执行 a
  • shellcheck.net 会自动发现很多此类问题
  • 你真的必须在学校作业中使用bash吗?在perlpython 中实现这一点会容易得多。
  • @VrataBlazek, ...我建议将awk 作为理想选择,因为它是 POSIX 的一部分(perl 和 python 都不是)并且具有浮点数学支持。让某人走上 perl 之路似乎很像为黑暗面招募人员。 :)
  • @VrataBlazek, ...也就是说,我不确定“更容易”——在语言的整数数学边界内,相关的 bash 语法并不难使用。

标签: bash if-statement


【解决方案1】:

在 bash 中创建数学上下文使用 (( ))。请注意,bash 仅原生支持整数数学 - 确保您不期望小数输出(或使用小数输入),如果此限制与您相关,请参阅 BashFAQ #22

if (( a > 0 )); then
  a=$(( a / b ))
else
  a=$(( b / a ))
fi

【讨论】:

  • 感谢 Charles Duffy 的快速回答,这很有效。 :)
猜你喜欢
  • 1970-01-01
  • 2021-03-09
  • 1970-01-01
  • 2015-07-04
  • 1970-01-01
  • 2020-05-17
  • 2017-11-20
  • 2017-04-19
  • 2014-11-29
相关资源
最近更新 更多