如何在 bc 中禁用换行符?

Vyt*_*nis 5 bash line-breaks bc

有没有办法禁用bc将长数字分成几行的功能,比如scale用于控制小数位的变量?当然,我可以使用sed,但是有没有bc办法做到这一点?http://www.gnu.org/software/bc/manual/html_mono/bc.html 的手册页仅说明每行的最大字符数为 70。

下面是一个数字被分割的例子:

bc -l <<< "scale = 100; a(1) * 4"
3.141592653589793238462643383279502884197169399375105820974944592307\
8164062862089986280348253421170676
Run Code Online (Sandbox Code Playgroud)

Jef*_*ica 8

网上BC手册页不匹配,我有什么根据“环境变量”; 日期为 2006-06-11 的我的版本 (v1.06.95) 的手册页声称您可以设置 BC_LINE_LENGTH=0 以禁用换行符,作为 GNU 特定的扩展:

BC_LINE_LENGTH

这应该是一个整数,用于指定数字输出行中的字符数。这包括长数字的反斜杠和换行符。作为扩展,零值禁用多行功能。此变量的任何其他小于 3 的值都将行长度设置为 70。

您可以在 shell 中将 BC_LINE_LENGTH 设置为环境变量,或者在调用之前内联bc

BC_LINE_LENGTH=0 bc -l <<< "scale = 100; a(1) * 4"
Run Code Online (Sandbox Code Playgroud)

结语:经过一番调查,似乎虽然 gnu.org 的最新版本是20001115日的v1.06并且与上面发布的文档相匹配,但还是有新的上游版本(v1.06.94 和 v1.06.95)托管在 alpha 上。 gnu.org。这些较新的版本包含 BC_LINE_LENGTH=0 功能。

请参阅2004 年创建并于 2007 年发布 (!)的Debian 特定错误报告和补丁,其中添加了此扩展,以及Debian 的 bc changelog。看起来这应该在现代版本的 Debian 和 Ubuntu 中可用,但可能不会出现在其他发行版中。

在较旧的实现中,选择任意大数 ( BC_LINE_LENGTH=5000) 可能会让您到达您想去的地方。