在Linux控制台中如何划分?

在Linux控制台中如何划分?,linux,math,command-line,divide,Linux,Math,Command Line,Divide,我必须计算变量,我想求一个除以另一个的值。我应该使用什么命令来执行此操作?我假设Linux控制台指的是Bash 如果X和Y是您的变量,$($X/$Y))返回您要求的内容。在bash shell中,用$(…) 尽管我认为您仅限于整数。使用bash将$a除以$b的整数除法示例: echo $((a/b)) 在bash中,如果您的分区中不需要小数,则可以执行以下操作: >echo $((5+6)) 11 >echo $((10/2)) 5 >echo $((10/3)) 3 我仍

我必须计算变量,我想求一个除以另一个的值。我应该使用什么命令来执行此操作?

我假设Linux控制台指的是Bash


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

在bash shell中,用
$(…)


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

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

echo $((a/b))

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

>echo $((5+6))
11
>echo $((10/2))
5
>echo $((10/3))
3
我仍然更喜欢使用dc,这是一个RPN计算器,所以快速将67除以18,精度为4位数看起来像

>dc
4k
67
18/p
3.7222
q
>
显然,更多的可用性:MANDC更好的方法是使用“bc”,一种任意精度的计算器

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

其中“刻度=5”表示精度

man bc 
附带了几个使用示例

echo 5/2 | bc -l
2.50000000000000000000


“bc”中的“-l”选项允许浮动结果

您可以使用raytrace的答案执行其他操作。您可以使用另一个shell调用的stdout,使用backticks进行一些计算。例如,我想从几个文件中知道前100行的文件大小。
wc-c
中的原始大小以字节为单位,我想知道KB。以下是我所做的:

echo `cat * | head -n 100 | wc -c` / 1024 | bc -l
您可以使用为数据提取而设计的实用程序/语言

e、 g.对于1.2/3.4

>echo 1.2 3.4 | awk '{ print $2/$1 }'
0.352941
您应该尝试使用:

echo "scale=4;$variablename/3"|bc

您还可以使用perl-e

perl -e 'print 67/8'

我也有同样的问题。整型数的除法很容易,但十进制数就没那么容易了。 如果你有2个数字,比如3.14和2.35,然后除以这些数字, 代码将是Division=
echo 3.14/2.35 | bc
回音“$Division” 引文不同。不要混淆,它就位于键盘上esc按钮的下方。 唯一的区别是| bc,这里echo作为算术运算的操作符,而不是打印。
因此,我添加了echo“$Division”来打印值。让我知道它是否适合你。谢谢。

变量不需要$,bash仅限于整数数学。查看本文:这真的与编程有关吗?[@frank-v Bash可用于编程……而且,faq链接也不管用;需要注意的一点是:不要将
scale
默认设置为整数除法-除非您指定
-l
,如下面的@raytrace notes,默认情况下会给您20个小数位,但也会加载一个带有附加函数的库。有几点需要注意可能节省一些行程到
man
:RPN=反向波兰符号;简而言之:首先输入操作数,然后输入运算符。需要终止
p
来输出结果。上述计算的非交互式版本是:
dc-e'4k 67 18/p'
。警告:不设置精度(使用
{numPlaces}k
)默认为0,即整数除法。酷;使用
-l
,默认情况下可以得到20位小数,并加载一个数学库,该库定义了其他函数,如正弦;要显式指定小数位数,请在表达式前面加上
scale={numPlaces};
(也),如@user1504475的回答所示。换句话说:
-l
是指定
scale=20;
的一种方便的替代方法,但由于加载库,会带来性能成本-但实际影响似乎可以忽略不计。此处不显示引号,因此,只需将引号(``)放在此处即可after=和bc之后。这些不是引号。它们是尖锐的重音符号。它们不会显示,因为StackOverflow使用它们突出显示代码段
这里的一些代码
只是被包裹在尖锐的重音符号中。
echo "scale=4;$variablename/3"|bc
perl -e 'print 67/8'