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)
在网上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 的最新版本是2000年11月15日的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
) 可能会让您到达您想去的地方。