如何从bash回显bc命令的输入?

时间:2014-03-06 04:41:12

标签: macos bash bc

我正在尝试创建一个bash别名或函数,它可以将文本传递给unix命令bc的stdin。

我首先尝试过:

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运行时错误。不确定输出是如何得到的。有什么见解吗?

1 个答案:

答案 0 :(得分:3)

对于要在bc中定义的数学函数,您需要指定-l选项。否则,bc会告诉您l等函数未定义。

因此它与别名无关。我不知道它如何与tcsh一起工作 - 它不在我的(ubuntu)系统上。虽然包括-l,即使通过别名 - 如同semitone -l一样 - 也适用于bashtcsh