【问题标题】:How can you echo input to the bc command from bash?如何从 bash 回显输入到 bc 命令?
【发布时间】:2014-03-06 04:41:12
【问题描述】:

我正在尝试创建一个 bash 别名或函数,它可以将文本通过管道传输到 unix 命令 bc 的标准输入。

我第一次尝试:

alias semitone="echo \"scale=10; e(l(2.))\" | bc"

哪个 bash 解析正常,但由于 bc 运行时错误而失败:

Runtime error (func=(main), adr=12): Function l not defined.

在 tcsh 中:

alias semitone 'echo "scale=10; e(l(2.)/12.)" | bc'

工作正常并给出正确的输出:

1.0594630943

我也尝试过使用 bash 函数:

semitone() { echo "scale=10; e(l(2.)/12.)" | bc ; }                                                                              

返回相同的 bc 运行时错误。不确定输出是如何处理的。有什么见解吗?

【问题讨论】:

  • 该代码在函数或别名之外也不起作用。尝试在提示符下运行 echo "scale=10; e(l(2.)/12.)" | bc

标签: macos bash bc


【解决方案1】:

要在bc 中定义数学函数,您需要指定-l 选项。否则,bc 会告诉你像 l 这样的函数没有定义。

所以它与别名无关。我不知道它如何与tcsh 一起工作——它不在我的(ubuntu)系统上。尽管包括-l,即使通过别名——如semitone -l——也适用于bashtcsh

【讨论】:

  • 糟糕,我的错误。我在 linux 下的 tcsh 和 bash 下都将 bc 别名为 bc -l 。太久没记住-l的功能了
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-10-19
  • 2020-08-15
  • 2021-06-24
  • 1970-01-01
相关资源
最近更新 更多