在Linux控制台中如何划分?
我必须计算变量,我想求一个除以另一个的值。我应该使用什么命令来执行此操作?我假设Linux控制台指的是Bash在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 我仍
如果
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'