使用有限状态机(FSM)解释shell 命令

一、有限状态机(Finite State Machine,FSM)是表示有限个状态及在这些状态之间的转移和动作等行为的数学模型,在计算机领域有着广泛的应用。FSM一个常见的应用就是用来负责Parser复杂的数据结构,比如解释URI协议(uri-rfc239、uri-rfc3986)(注释:统一资源标识符(Uniform Resource Identifier,或URI)),在这里以Linux下shell命令字符串解释为列子,说明FSM的应用。

二、简单介绍shell中的各种符号应用
1、shell脚本中的单引号和双引号一样都是字符串的界定符,而不是字符的界定符。单引号用于保持引号内所有字符的字面值,即使引号内的\和回车也不例外,但是字符串中不能出现单引号。(注意是所有,只是单引号本身不能够出现在其中)。

2、双引号用于保持引号内所有字符的字面值(回车也不例外),但以下情况除外:
escape$的字面值
`表示`的字面值
\”表示”的字面值
\表示\的字面值
除以上情况之外,在其它字符前面的\无特殊含义,只表示字面值。

双引号还有一个作用,引用的字符串包含空格的时候,可以用双引号括起来。

3、环境变量,使用()USER, HOME使{USER},${HOME}形式引用环境变量。

三、基于以上认识,设计了下面的状态图,系统初始状态是TEXT状态,其中ESC是ESCAPE,表示转义字符状态,举个列子,提供shell字符串cmdline,逐个每个输入的字符,如果遇到输入进来的字符是 \ 表示进入ESC状态,在ESC状态输入任何字符立即进入TEXT状态。在看,TEXT状态,如果输入的字符是$,系统进入VAR环境变量状态,再接下来如果是 { 字符, 系统进入 VARNAME2 状态,否则进入 VARNAME状态。待系统遍历完所有的cmdline上的字符,就完成了shell 命令的解释(parser)工作。

这里写图片描述

四、上代码

这里写代码片

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/242743.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

搭建JAVAEE环境

搭建JAVAEE环境 ./表示在当前目录下查找文件所以需要配置环境变量 在Linux下下载 或者在window下传输

小数延迟滤波器

作者:桂。 时间:2017-10-10 22:38:46 链接:http://www.cnblogs.com/xingshansi/p/7648274.html 前言 阵列信号处理中,经常用到小数延迟(fractional delay,FD)的思路,例如Beamformi…

空间谱专题13:联合解算DOA(ML/AP)

其中作者:桂。 时间:2017-10-16 07:51:40 链接:http://www.cnblogs.com/xingshansi/p/7675380.html 前言 主要记录二维测向中,分别利用两个一维阵联合解算的思路。 一、AP算法思想 信号模型: 对应相关矩阵 假设噪声为…

机器学习之正则化

根据上一篇博客《统计学习概论》可以知道,正则化的作用是选择经验风险和模型复杂度同时较小的模型。下面从过拟合的角度来理解正则化。 #过拟合问题 例子说明,线性回归问题(房价) 分析: 1)左边第一幅图&am…

python开发平台Ubuntu

python开发平台Ubuntu APT软件管理和远程登录

投影矩阵

作者:桂。 时间:2017-10-19 06:02:00 链接:http://www.cnblogs.com/xingshansi/p/7690292.html 前言 最近在交替投影算法中,用到投影矩阵,简单记录。 一、投影矩阵定义 此处以列满秩为例,行满秩可依次类推…

不同维度极值点查找

作者:桂。 时间:2017-10-19 17:00:12 链接:http://www.cnblogs.com/xingshansi/p/7693557.html 前言 主要梳理不同维度信号极值点的查找思路。 一、思想 思想都是一个,通过极值点的定义:数值高于相邻的点&#xff0c…

俯仰角/偏航角的转化

作者:桂。 时间:2017-10-20 10:29:52 链接:http://www.cnblogs.com/xingshansi/p/7698237.html 前言 主要记录坐标系的转化。 一、坐标转化 对于坐标系: 设方位角为φ,俯仰角为theta,仰角β与偏航角α&am…

安装Centos8.1

安装Centos8.1 按回车

逾期后,如何修复个人征信?

个人征信大家都是知道很宝贵,但是有些朋友会在有意无意之间造成逾期,结果给申请贷款、申请信用卡带来了诸多不便。逾期是谁也不想看到的,但是如果逾期已经发生了,我们就无法改变,唯一能做的就是努力去修复,…

空间谱专题16:信号个数估计

作者:桂。 时间:2017-10-24 21:50:16 链接:http://www.cnblogs.com/xingshansi/p/7726082.html 前言 记录阵列信号在DOA估计中,信源个数估计的基本方法。 一、基本估计方法 参考:王永良《空间谱估计》p42: 以MDL为例&#xff1a…

根据verilog代码画电路图

根据verilog代码画电路图 FPGA设计的本质是硬件设计,而且verilog是描述硬件设计的语言(也就是描述电路),一个标准的工程师需要学会建立电路和Verilog对应的关系,学会看到电路图,就能写出相应的Verilog代码…

复数矩阵分解的拆解思路(矩阵求逆/特征值分解)

作者:桂。 时间:2017-10-26 07:11:02 链接:http://www.cnblogs.com/xingshansi/p/7735016.html 前言 主要记录特征值分解的硬件实现思路。 一、实数矩阵转化 在FPGA运算中,对实数运算通常优于对复数运算。假设C为复数矩阵&#…

贷款机构如何审核个人征信?

贷款是要查看征信的, 但是大家知道贷款机构是如何审查借款人的征信吗?下面我们一起来看下。1看征信报告打印时间一般贷款机构要求提供的是最新的征信报告,当然每个机构要的具体期限不一样,有的要求是最近一个月的,有的…

COMS技术

COMS技术 n型MOS(NMOS)三极管的结构如图所示,该图不是按照实际比例绘制的。三极管的衬底是被掺杂后成为p型半导体材料的硅晶片。NMOS衬底的厚度远比其他三极管要厚。在每个三极管上有两个区域,被掺入大量的杂质,成为n型半导体区域。这两个区域分别形成了三极管的源极和漏极…

VS2015 + CUDA 8.0 配置GTX1070的OpenCL 开发环境

一、查看计算机对OpenCL异构计算的支持情况 使用 GPU Caps Viewer 查看计算机对OpenCL的支持情况,目前最新的版本是 gpu-caps-viewer-1-32-0, 下载地址:http://www.geeks3d.com/20161107/gpu-caps-viewer-1-32-0-released/ 从上面两个图可以…

征信逾期了,5年后能自动消除吗?

最近有一个朋友去申请贷款,然后被拒了,理由是属于征信黑名单。这个朋友很纳闷,自己最近几年从来没有贷过款,信用卡每个月都是正常在还,没有出现逾期过,为何说征信是黑名单呢?后来一问才知道&…

常用频段及对应名称

作者:桂。 时间:2017-11-12 07:31:46 链接:http://www.cnblogs.com/xingshansi/p/7820971.html 一、主要频段 不同规定:IEEE/国际电信联盟(ITU)/北约(NATO)EU(欧盟) US(美国)&…

布尔代数值

布尔代数值 值 数字系统使用二值代数。其变量可以取由:1)接通/断开;2)真/假;3)1/0表示的两值之一。 操作符 1)NOT(非) 2)AND(与) 3)OR(或) 4)IMPLIES(蕴涵) 5)EQUIVALENCE(同或) 上面表达式中的符号“+”表示“或”;符号“”表示“与”;而横杠,例如“~A”则表示“A的非”…