当前位置:首页>Linux>别再用计算器了!Linux bc命令10个经典实用用法,运维每天都在用

别再用计算器了!Linux bc命令10个经典实用用法,运维每天都在用

  • 2026-09-10 22:52:59
别再用计算器了!Linux bc命令10个经典实用用法,运维每天都在用

日常用windows电脑时,大多数人都会直接打开系统自带的科学计算器:算小数除法、进制互转、开平方、三角函数,不用安装任何第三方软件,开箱即用。但切换到Linux终端后,很多人就不知道如何计算,掏出手机算数,忽略了linux原生内置同款科学计算器-bc命令。

bc是linux系统预装、零依赖、任意精度的命令行计算器,大部分linux发行版默认自带,查看是否安装可以使用

bc -version

它既能交互式手动计算,也能嵌入Shell脚本自动化运算,是运维、数据巡检的刚需工具。

bc两个必记参数

1. -q:静默启动,屏蔽bc默认的版权欢迎语,编写脚本必备

2. -l:加载内置标准数学库,支持三角函数、平方根、对数,默认不开启

一、bc的基础应用
1.管道调用
#遵循数学优先级,先乘除后加减echo "5+3*2" | bc
#括号强制改变优先级echo "(5+3)*2" | bc

2. here字符串调用

bc <<< "(100-22)/4"
<<< 为 Here String传参方式,适合临时计算。备注:bc默认除法为整数截断,不是四舍五入。
#例如 echo "10/3"|bc #输出3,而非3.333。

二、浮点小数运算

scale是bc的核心变量,代表保留小数点后位数,是日常使用率最高的功能。绝大多数人只会基础用法,不知道两个隐藏规则。

1. 基础保留小数

#保留2位小数echo "scale=2;10/3" | bc#保留6位小数,磁盘容量换算高频用法echo "scale=6;1000/1024" | bc

2.scale规则的两个注意事项

  1. 加减法、乘法不受scale限制:

echo "scale=2;1.23*2.45"|bc#部分旧版本scale仅作用于除法,乘法不会截断,会输出完整3.0135

2.scale只做截断,不四舍五入:10/3保留两位是3.33,不会进位为3.34

echo "scale=2;10/3"|bc

三、进制转换:替代计算器手动换算

运维排查内存地址、ip掩码、十六进制日志时,无需打开网页进制转换器,bc一条命令搞定,依靠 ibase(输入进制)、obase(输出进制) 两个变量。

硬性规则:ibase/obase必须写在表达式前面,且数值默认小写,十六进制大写字母无需前缀0x。

1. 十六进制--十进制相互转换

#16进制转10进制:FF转255echo "ibase=16;FF" | bc#10进制转16进制:255转FFecho "obase=16;255" | bc
ibase:指定输入进制,obase 指定输出进制。

2. 二进制--十进制(子网掩码换算常用)

#二进制11111111转十进制echo "ibase=2;11111111" | bc

注意:同时修改ibase和obase时,必须先写obase:echo "obase=2;ibase=16;FF"|bc,顺序颠倒会计算错误。

echo "obase=2;ibase=16;FF" | bc

四、内置数学函数

默认bc不开启高级数学函数,添加 -l 参数自动加载数学库,覆盖运维、开发高频数学场景,无需额外工具。

#1.平方根echo "scale=4;sqrt(20)" | bc -l#2.指数运算echo "2^20" | bc#3.正弦函数(弧度)echo "scale=3;s(3.14159/2)" | bc -l#4.自然对数echo "scale=3;l(10)" | bc -l

函数简写对照表(bc 内置)

  • sqrt(x):平方根
  • s(x):正弦 sin(x)
  • c(x):余弦 cos(x)
  • l(x):自然对数 ln(x)
  • e(x):自然指数 ex

五、shell脚本用法

在巡检服务器cpu、内存、磁盘使用率百分比计算,bash原生无法算小数,bc是最优的选项。

如计算内存使用率:

#!/bin/bash#获取服务器总内存、已用内存total_mem=$(free | awk '/Mem/{print $2}')used_mem=$(free | awk '/Mem/{print $3}')#计算内存使用率,保留2位小数rate=$(echo "scale=2; $used_mem / $total_mem * 100" | bc)#输出结果echo "当前内存使用率:${rate}%"

六、临时交换式用法

在我们日常临时算带宽、流量、存储容量,直接交互式使用,无需每次写echo管道。搭配-q屏蔽冗余提示。

#静默进入交互模式bc -qscale=31500/1024#直接返回1.464,输入quit退出

七:注意事项

  • 小数乘法精度丢失:乘法不受scale控制,需要手动后置截断,例:echo "scale=2;scale=2;1.2*1.5"|bc

  • 进制顺序错误:双进制转换永远先定义obase,再定义ibase

  • -l参数副作用:加载数学库后scale默认变为20,会输出超长小数,需要手动重设scale

  • 负数运算:bc原生支持负数,无需额外参数,例:echo "5-10"|bc直接返回-5

八、总结

bc并非小众工具,是linux原生轻量化数值计算神器,90%的日常计算场景都能覆盖:

•临时终端算数:管道调用/交互式bc模式

•脚本百分比统计:scale+管道组合

•日志进制换算:ibase/obase

•高精度数学运算:搭配-l参数

后续遇到linux数值计算需求,优先用bc,告别第三方计算器、避免awk冗余代码。如果觉得文章对你有帮助,记得点赞加收藏。

#运维#linux运维#linux计算#bc命令

最新文章

随机文章