我在Makefile中执行以下操作:
echo "0.1 + 0.1" | bc
Run Code Online (Sandbox Code Playgroud)
(在实际文件中,数字是动态的,当然)
它打印.2但我想要它打印0.2.
我想这样做而不诉诸,sed但我似乎无法找到如何bc打印零.或者bc只是不能这样做?
我的服务器上有一个备份脚本,用于执行备份的cron作业,并向我发送备份文件的摘要,包括新备份文件的大小.作为脚本的一部分,我想将文件的最终大小除以(1024 ^ 3),以文件大小(以字节为单位)获取GB的文件大小.
由于bash没有浮点计算,我试图使用管道来获取结果,但是我对基本的例子感到困惑.
我试图将Pi的值设为一个比例,但是,
即使以下工作:
~ #bc -l
bc 1.06.95
Copyright 1991-1994, 1997, 1998, 2000, 2004, 2006 Free Software Foundation, Inc.
This is free software with ABSOLUTELY NO WARRANTY.
For details type `warranty'.
4/3
1.33333333333333333333
22/7
3.14285714285714285714
q
0
quit
Run Code Online (Sandbox Code Playgroud)
非交互式版本不起作用:
#echo $(( 22/7 )) | bc
3
Run Code Online (Sandbox Code Playgroud)
这有效:
#echo '22/7' | bc -l
3.14285714285714285714
Run Code Online (Sandbox Code Playgroud)
但我需要使用变量.所以它没有帮助,以下不起作用:
#a=22 ; b=7
#echo $(( a/b )) | bc -l
3
Run Code Online (Sandbox Code Playgroud)
我显然在Bash中使用变量的语法中缺少一些东西,并且可以使用一些关于我误解的"指针".
正如DigitalRoss所说,我可以使用以下内容:
#echo $a / $b | bc -l
3.14285714285714285714
Run Code Online (Sandbox Code Playgroud)
但是,我不能使用复杂的表达式,如:
#echo …Run Code Online (Sandbox Code Playgroud) bc 不喜欢用科学记数法表示的数字(又称指数表示法).
$ echo "3.1e1*2" | bc -l
(standard_in) 1: parse error
Run Code Online (Sandbox Code Playgroud)
但是我需要用它来处理用这种表示法表达的一些记录.有没有办法bc了解指数表示法?如果没有,我该怎么做才能将它们翻译成bc可以理解的格式?
我需要'bc'来划分一个数字,不仅给我一个地板,还给我剩下的.例如,如果我做"5/2",'bc'给我'2'.我真的想要'2.5'之类的东西
也许这甚至不可能?
如何将此结果分配给shell变量?
输入:
echo '1+1' | bc -l
输出:
2
尝试:
(没用)
#!bin/sh
a=echo '1+1' | bc -l
echo $a
Run Code Online (Sandbox Code Playgroud) 我无法弄清楚为什么bc工具有时会忽略缩放选项.
这是一个例子:
> echo 'scale=2; 2.777 - 1.4744' | bc
1.3026
Run Code Online (Sandbox Code Playgroud)
预期结果是:
1.30
Run Code Online (Sandbox Code Playgroud)
附加信息:
> bash --version
GNU bash, version 2.05b.0(1)-release (x86_64-suse-linux)
Copyright (C) 2002 Free Software Foundation, Inc.
> bc --version
bc 1.06
Copyright 1991-1994, 1997, 1998, 2000 Free Software Foundation, Inc.
Run Code Online (Sandbox Code Playgroud) 如何使用截断浮点数 bc
例如,如果我这样做
echo '4.2-1.3' | bc
Run Code Online (Sandbox Code Playgroud)
它输出2.9我如何截断/使用楼层来获取2
我正在学习bash脚本.在探索数学函数时,我遇到了一个计算pi值的命令.
seq -f '4/%g' 1 2 99999 | paste -sd-+ | bc -l
Run Code Online (Sandbox Code Playgroud)
虽然我理解基本的seq命令是如何工作的,但我无法理解上述命令是如何工作的.任何人都可以澄清它是如何工作的.