74

我必须变量,我想找到一个除以另一个的值。我应该使用哪些命令来执行此操作?

4

12 回答 12

69

在 bash shell 中,用$(( ... ))

$ echo $(( 7 / 3 ))
2

尽管我认为您仅限于整数。

于 2009-07-06T17:12:44.773 回答
39
echo 5/2 | bc -l

2.50000000000000000000

'bc' 中的这个 '-l' 选项允许浮动结果

于 2013-05-21T17:06:39.680 回答
17

更好的方法是使用“bc”,一个任意精度的计算器。

variable=$(echo "OPTIONS; OPERATIONS" | bc)

前任:

my_var=$(echo "scale=5; $temp_var/100 + $temp_var2" | bc)

其中“scale=5”是准确度。

man bc 

附带几个使用示例。

于 2012-07-05T15:27:54.223 回答
12

您可以使用awk,它是一种专为数据提取而设计的实用程序/语言

例如 1.2/3.4

>echo 1.2 3.4 | awk '{ print $2/$1 }'
0.352941
于 2014-07-11T20:31:15.963 回答
11

我仍然更喜欢使用dc,它是一个 RPN 计算器,因此以 4 位精度将 67 除以 18 的快速会话看起来像

>dc
4k
67
18/p
3.7222
q
>

显然,更多可用:man dc

于 2009-07-06T18:51:15.370 回答
8

在 bash 中,如果您的除法中不需要小数,您可以执行以下操作:

>echo $((5+6))
11
>echo $((10/2))
5
>echo $((10/3))
3
于 2009-07-06T17:13:38.267 回答
5

我假设Linux 控制台是指Bash

如果XY是您的变量,则$(($X / $Y))返回您要求的内容。

于 2009-07-06T17:12:36.223 回答
2

使用 bash 将 $a 除以 $b 的整数除法示例:

echo $((a/b))
于 2009-07-06T17:13:11.153 回答
2

您可以使用光线跟踪的答案做其他事情。您可以使用反引号来使用另一个 shell 调用的标准输出,然后进行一些计算。例如,我想知道几个文件中前 100 行的文件大小。原始大小wc -c以字节为单位,我想知道千字节。这是我所做的:

echo `cat * | head -n 100 | wc -c` / 1024 | bc -l
于 2014-02-11T22:23:44.960 回答
1

您应该尝试使用:

echo "scale=4;$variablename/3"|bc
于 2014-09-08T10:20:49.590 回答
1

你也可以使用 perl -e

perl -e 'print 67/8'
于 2015-05-08T09:06:24.297 回答
-1

我也有同样的问题。整数除法很容易,但十进制数并不那么容易。如果您有 2 个数字,例如 3.14 和 2.35,然后将这些数字相除,则代码将为 Division= echo 3.14 / 2.35 | bc echo "$Division" 引号不同。不要混淆,它位于键盘上的 esc 按钮下方。唯一的区别是 | bc 和这里的 echo 用作算术计算的运算符而不是打印。所以,我添加了 echo "$Division" 来打印值。请让我知道这对你有没有用。谢谢你。

于 2017-11-04T19:53:10.867 回答