前言
呵呵 这个命令 应该是 linux 使用者 基本上都会使用到的吧?
呵呵 我们这里主要是 看一下 这个命令是如何工作的
main 中主要是参数处理, 然后将核心业务委托给 eval
eval 主要是委托业务给 eval1 - eval7 来处理, 分别是 由优先级的从低到高
这就是一个 自己从 0 开始的 eval 的一个实现, 呵呵 很经典
我之前有一个自己的 EvalLike, 实现相对简单 02 计算字符串表达式 [类似于js eval函数]_970655147的专栏
基于 linux-4.4.0 + coreutils-8.25
调试基于命令 "expr 2 + 3"
main
参数处理, 然后将核心业务委托给 eval
eval
首先是 | 的处理
eval1 是 & 的处理
eval2 是 <, >, <=, >=, ==, != 的处理
eval3 是 +, - 的处理
eval4 是 *, /, % 的处理
eval5 是 : 的处理
eval6 是 length, match, index, substr 的处理
eval7 是 () 的处理
我们这里的 2 + 3 的处理
完