首页 > 其他分享 >bc 命令简述

bc 命令简述

时间:2024-01-25 20:33:06浏览次数:41  
标签:10 内置 变量 bc 命令 简述 进制

前言

shell 脚本里可用 echo $(( expr )) 方式进行简单计算,而对于复杂计算就无能为力。

而这时 bc (Basic Calculator)命令就可以派上用场,本文就介绍下这个命令的用法。

基础用法

bc 命令通过标准输入、文件或交互式(interactive)方式,获取待计算的表达式然后输出结果。

> echo "1+1" | bc
2
> bc -q calc.bc
2
> bc -q
1+1
2

备注:-q 选项表示不显示初始化文字。

变量

bc 支持使用变量,变量标识符以小写字母开头,后面可以为小写字母、数字和下划线。

> bc -q
var_1=1
var_1+var_1
2

大写字母用于代表数值常量,A代表10,按序递增1。

> bc -q
A
10
Z
35

变量未定义初始值为0,如下例子所示:

> bc -q
undefined += 2
undefined
2

内置变量

除了自定义变量,bc 还内置了以下变量:

  • ibase 设置输入进制,默认值为10即十进制;
  • obase 设置输出进制,默认值为10即十进制;
  • scale 设置输出的小数位数,只对除、取余、乘幂有效,默认值为0,使用-l选项开启数学库时默认值为20;
  • last 表示最后一个输出值。

进制转换

通过内置变量可以很方便的进行进制转换,如以下例子将16进制转换为10进制:

> echo "obase=10;ibase=16;FF" | bc
255 

备注:同一行中支持分号分隔多个表达式。

函数

bc 命令支持自定义函数,以关键字 define 开头,如以下例子定义了 sum 函数,对参数a和b相加返回,并在下一行进行了调用:

> bc -q
define sum(a, b) { return a + b; }
sum(1, 1)
2

内置函数

和变量一样,bc 命令也内置了一些数学库函数,使用 -l 选项开启,下面例子用内置的反正切函数(atan)计算圆周率 π:

> bc -l
a(1)*4
3.14159265358979323844

更多内置函数说明可以参考此网址 bc command manual - Math Libary Functions,或使用命令 man bc 查看手册。

语句

bc 也支持语句,例如 if else 语句:

> bc -q
f=0
if (f == 0) {
    print "Equal zero.\n";
} else {
    print "Not equal zero.\n";
}
Equal zero.

其它的 forbreakreturn 等语句的语法和 c 类似,这里就不做介绍,具体可以使用命令 man bc 查看手册里说明。

标签:10,内置,变量,bc,命令,简述,进制
From: https://www.cnblogs.com/linzhehuang/p/17988103

相关文章

  • linux系统中命令的使用方式和技巧(一)
    1.1linux的命令格式command[-option][parameter]说明:command:命令名,相应功能的英文单词或单词的缩写[-option]:选项,可用来对命令进行控制,也可以省略,[]代表可选parameter...:传给命令的参数,可以是零个一或多个1.2关于命令的文档可以查看--help一般是Linux命令自带的帮助信息,并不是......
  • ABC337G Tree Inversion
    思路对于每个\(1\lei\len\)的\(i\)都要求答案,那我们考虑dp,去思考如何转移\(f_i\)。先不考虑全局,只考虑子树内的贡献,设\(g_u\)表示以\(u\)为根的子树内,对\(u\)来说满足条件的点对数。对于\(u\)的儿子\(v\),对\(v\)来说合法那么对\(u\)来说也一定合法。因为......
  • egrep命令
    egrep命令是用于在文本文件中搜索匹配某个模式的行的工具。它是基于正则表达式引擎的grep命令的扩展版本,支持更多的正则表达式语法。以下是egrep命令的一般语法:shell复制代码egrep[选项]模式文件其中,模式是您要搜索的正则表达式模式,而文件是要在其中进行搜索的文本文件。您......
  • Centos桌面模式和命令行模式切换
    希望在VMware中的CentOS虚拟机默认启动到命令行模式(无桌面模式),而不是图形用户界面(GUI),可以按照以下步骤操作:打开终端,使用以下命令获取当前的默认目标(target),如果是图形模式,通常会显示graphical.target。systemctlget-default将默认目标设置为多用户模式,这是一个无桌面的......
  • 初始 abp 开源框架-通过CMD命令创建项目--到果断放弃ABP
    打开官网:https://abp.io/get-started选则如下配置  根据黑色框内指令,创建项目 指令1dotnettoolinstall-gVolo.Abp.Cli指令2abpnewAcme.BookStore--tiered-csf 放弃理由:  ......
  • nfs服务的常用命令和路径文件介绍_
    1.NFS配置文件路径1.1路径:/etc/exports 1.2路径:/usr/sbin/exportfs 1.3路径:/usr/sbin/showmount 1.4路径:/var/lib/nfs/etab 1.5路径:/var/lib/nfs/xtab,  ......
  • 【K8S】label标签常用命令
    node节点增加、修改、删除、查看、查找label标签单个node增加标签:kubectllabelnode<nodename>type=basic所有node增加标签:kubectllabelnode--alltype=basic修改:kubectllabelnode<nodename>type=special--overwrite删除单个标签:kubectllabelnode<nodename>type-......
  • centos 离线安装tree命令
    在线安装tree命令:yum-yinstalltree 但是在线包总是下载失败:RepositoryepelislistedmorethanonceintheconfigurationRepositoryepel-debuginfoislistedmorethanonceintheconfigurationRepositoryepel-sourceislistedmorethanonceinthecon......
  • nmap命令的用法
    Nmap简介Nmap是一款非常强大的主机发现和端口扫描工具,而且nmap运用自带的脚本,还能完成漏洞检测,同时支持多平台。官网一般情况下,Nmap用于列举网络主机清单、管理服务升级调度、监控主机或服务运行状况。Nmap可以检测目标机是否在线、端口开放情况、侦测运行的服务类型及版本信......
  • Rust 一个 I/O 项目:构建一个命令行程序
    本篇在原文基础上有删减和添加,增加了一些细节内容,原文请参考一个I/O项目:构建一个命令行程序。目录接受命令行参数读取参数值将参数值保存进变量读取文件重构改进模块性和错误处理二进制项目的关注分离提取参数解析器组合配置值使用clone的权衡取舍创建一个Config的构造函数......