我正在尝试创建一个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运行时错误。不确定输出是如何得到的。有什么见解吗?
答案 0 :(得分:3)
对于要在bc
中定义的数学函数,您需要指定-l
选项。否则,bc
会告诉您l
等函数未定义。
因此它与别名无关。我不知道它如何与tcsh
一起工作 - 它不在我的(ubuntu)系统上。虽然包括-l
,即使通过别名 - 如同semitone -l
一样 - 也适用于bash
和tcsh