0

我正在尝试创建一个 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 运行时错误。不确定输出是如何处理的。有什么见解吗?

4

1 回答 1

3

对于要在 中定义的数学函数bc,您需要指定-l选项。否则,bc会告诉你l没有定义类似的函数。

所以它与别名无关。我不知道它是如何工作的tcsh——它不在我的(ubuntu)系统上。尽管包括-l, 甚至通过别名 - 如在semitone -l- 与bash和都可以正常工作tcsh

于 2014-03-06T04:44:45.193 回答