我一直觉得bc
有点神秘和有趣。这是其中之一这原始的 Unix 程序。它本身就是一种编程语言。所以我很乐意抓住任何机会来使用它。由于bc
似乎不包含阶乘函数,我想这样定义一个:
define fact(x) {
if (x>1) {
return (x * fact(x-1))
}
return (1)
}
但是……我不能再重复使用它,可以吗?我希望能够做类似的事情
me@home$ bc <<< "1/fact(937)"
答案1
将函数定义保存在类似 的文件中factorial.bc
,然后运行
bc factorial.bc <<< '1/fact(937)'
如果您希望阶乘函数在运行时始终加载bc
,我建议bc
使用 shell 脚本或函数包装二进制文件(脚本还是函数最好取决于您想如何使用它)。
脚本 ( bc
, 放入~/bin
)
#!/bin/sh
/usr/bin/bc ~/factorial.bc << EOF
$*
EOF
函数(放入shell rc文件中)
bc () {
command bc ~/factorial.bc << EOF
$*
EOF
}
来自bc
POSIX 规范:
它将从给定的任何文件中获取输入,然后从标准输入中读取。
答案2
比为 编写 shell 包装函数稍好一些,您可以在环境变量中bc
指定 GNU 的默认参数。bc
因此,将配置文件.bcrc
或其他内容放入您的主目录中,然后
export BC_ENV_ARGS="$HOME/.bcrc "
来自GNUbc
手册:
BC_ENV_ARGS
This is another mechanism to get arguments to bc. The format is the same
as the command line arguments. These arguments are processed first, so
any files listed in the environment arguments are processed before any
command line argument files. This allows the user to set up "standard"
options and files to be processed at every invocation of bc. The files
in the environment variables would typically contain function
definitions for functions the user wants defined every time bc is run.