Skip to Content
bash shell脚本编程经典实例 (第2版)
book

bash shell脚本编程经典实例 (第2版)

by Carl Albing, JP Vossen
January 2021
Intermediate to advanced
581 pages
15h 7m
Chinese
Posts & Telecom Press
Content preview from bash shell脚本编程经典实例 (第2版)
136
6
6.18
 创建简单的
RPN
计算器
6.18.1
 问题
你也许只用口算就能将二进制转换成十进制、八进制、十六进制,不过同样的法子对简单
的算术运算似乎无能为力,而且计算器还总是在需要的时候不见踪影。这该怎么办?
6.18.2
 解决方案
像例
6-8
中那样,用
shell
算术和
RPN
6
创建一个计算器。
6-8
 
ch06/rpncalc
#!/usr/bin/env bash
# 实例文件:rpncalc
#
# 简单的RPN命令行(整数)计算器
#
# 获取用户提供的参数并计算
# 参数形式为:a b运算符
# 允许使用*x*代替*
#
# 检查参数数量:
if
[
\(
$# -lt 3
\)
-o
\( $((
$# % 2
))
-eq 0
\)
]
then
echo "usage: calc number number op [ number op ] ..."
echo "use x or '*' for multiplication"
exit 1
fi
ANS=
$((
$1 ${3//x/*} $2
))
shift 3
while
[ $# -gt 0 ]
do
ANS=
$((
ANS ${2//x/*} $1
))
shift 2
done
echo $ANS
6.18.3
 讨论
RPN
(或者后缀)风格的表示法将操作数(数字)放在前面,然后是运算符。如果使用
RPN
,那么表达式应该写成
5 4 +
,而不是
5 + 4
。要是想将结果再乘以
2
,将
2 *
写在后
面即可,因此整个表达式就是 ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.

Read now

Unlock full access

More than 5,000 organizations count on O’Reilly

AirBnbBlueOriginElectronic ArtsHomeDepotNasdaqRakutenTata Consultancy Services

QuotationMarkO’Reilly covers everything we've got, with content to help us build a world-class technology community, upgrade the capabilities and competencies of our teams, and improve overall team performance as well as their engagement.
Julian F.
Head of Cybersecurity
QuotationMarkI wanted to learn C and C++, but it didn't click for me until I picked up an O'Reilly book. When I went on the O’Reilly platform, I was astonished to find all the books there, plus live events and sandboxes so you could play around with the technology.
Addison B.
Field Engineer
QuotationMarkI’ve been on the O’Reilly platform for more than eight years. I use a couple of learning platforms, but I'm on O'Reilly more than anybody else. When you're there, you start learning. I'm never disappointed.
Amir M.
Data Platform Tech Lead
QuotationMarkI'm always learning. So when I got on to O'Reilly, I was like a kid in a candy store. There are playlists. There are answers. There's on-demand training. It's worth its weight in gold, in terms of what it allows me to do.
Mark W.
Embedded Software Engineer

You might also like

bash 网络安全运维

bash 网络安全运维

Paul Troncone, Carl Albing
Linux 内核观测技术BPF

Linux 内核观测技术BPF

David Calavera, Lorenzo Fontana

Publisher Resources

ISBN: 9787115553782