gpt4 book ai didi

bash - float 导致 Bash 整数除法

转载 作者:行者123 更新时间:2023-11-29 08:41:12 25 4
gpt4 key购买 nike

我的服务器上有一个备份脚本,它执行备份的 cron 作业,并向我发送备份文件的摘要,包括新备份文件的大小。作为脚本的一部分,我想将文件的最终大小除以 (1024^3) 以从文件大小(以字节为单位)得到以 GB 为单位的文件大小。

由于 bash 没有浮点计算,我试图使用管道到 bc 来获得结果,但是我对基本示例感到困惑。

然而,我试图让 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

非交互式版本不起作用:

#echo $(( 22/7 )) | bc
3

这个有效:

#echo '22/7' | bc -l
3.14285714285714285714

但我需要使用变量。因此,以下内容不起作用也无济于事:

#a=22 ; b=7
#echo $(( a/b )) | bc -l
3

我显然在 Bash 中使用变量的语法中遗漏了一些东西,并且可以与一些我误解的“指针”一起使用。

正如 DigitalRoss 所说,我可以使用以下内容:

#echo $a / $b | bc -l
3.14285714285714285714

但是我不能使用像这样的复杂表达式:

#echo $a / (( $b-34 )) | bc -l
-bash: syntax error near unexpected token `('
#echo $a / (( b-34 )) | bc -l
-bash: syntax error near unexpected token `('
#echo $a / (( b-34 )) | bc -l
-bash: syntax error near unexpected token `('

谁能给我一个正确的语法来获得复杂算术表达式的浮点结果?

最佳答案

只需双引号 (") 表达式:

echo "$a / ( $b - 34 )" | bc -l

然后 bash 将扩展 $ 变量并忽略其他所有内容,bc 将看到带括号的表达式:

$ a=22
$ b=7
$ echo "$a / ( $b - 34 )"
22 / ( 7 - 34 )

$ echo "$a / ( $b - 34 )" | bc -l
-.81481481481481481481

关于bash - float 导致 Bash 整数除法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15015809/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com