如何定义`bc`函数供以后使用?


8

我总是发现bc一种神秘而有趣的东西。这是一个原来的Unix程序。它本身就是一种编程语言。因此,我很高兴能有机会找到使用它的机会。

由于bc似乎不包含阶乘函数,因此我想这样定义一个:

define fact(x) {
  if (x>1) {
    return (x * fact(x-1))
  }
  return (1)

}

但是...我不能再使用了,可以吗?

我希望能够做类似的事情

me@home$ bc <<< "1/fact(937)"

Answers:


11

将函数定义保存在类似的文件中factorial.bc,然后运行

bc factorial.bc <<< '1/fact(937)'

如果您希望阶乘函数在运行时始终加载bc,我建议bc用shell脚本或函数包装二进制文件(脚本或函数是否最佳取决于您的使用方式)。

脚本(bc,放入~/bin

#!/bin/sh

bc ~/factorial.bc << EOF
$@
EOF

功能(放入外壳rc文件中)

bc () {
    bc ~/factorial.bc << EOF
    $@
    EOF
}

根据bcPOSIX规范

它应从给定的任何文件中获取输入,然后从标准输入中读取。


也许您可以将文件命名为.bcrc?您可以将多个定义放在同一个文件中吗?
Bernhard 2012年

是的,您可以在文件中放入任何有效的bc语法。文件的名称和放置位置完全取决于您。
2012年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.