【发布时间】:2011-02-13 04:32:57
【问题描述】:
我在 Bash 脚本中有两个用于 GNU bc 的函数。
BC_CEIL="define ceil(x) { if (x>0) { if (x%1>0) return x+(1-(x%1)) else return x } else return -1*floor(-1*x) }\n"
BC_FLOOR="define floor(x) { if (x>0) return x-(x%1) else return -1*ceil(-1*x) }\n"
echo -e "scale=2"$BC_CEIL$BC_FLOOR"ceil(2.5)" | bc
这两个函数在交互式 bc 中都能正常工作。 bc 似乎不允许在一行上使用多个函数,由 ; 分隔不过,所以我必须回显 -n | bc 在每个函数的末尾加上换行符。上面的输出是 2.5,而不是我自己输入 bc -i 时得到的预期 3.0。似乎 bash 为每一行回显输出调用 bc,而不是将其全部回显到单个实例。有什么解决方法吗?
【问题讨论】:
-
我以交互方式获得 2.5。