- 1、本文档共26页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Chapter9-可编程shell_、shell变量和环境
Unix/Linux编程;第九章 可编程的shell 、shell变量和环境:编 写自己的shell;概念与技巧:; 9.1 shell编程
9.2 什么是以及为什么要使用shell脚本语言
9.3 smsh1-----命令行解析
9.4 shell的流程控制
9.5 shell变量:局部和全局
9.6 环境:个性化设置
9.7 已实现的shell的功能; Shell程序,一般称之为设shell脚本,是Unix的重要组成部分,Unix的引导程序和很多管理程序都使用shell脚本。; Sh的编程特征:变量、I/O和if..then
脚本中除了命令之外还包括以下元素:
1 变量 脚本中可以定义变量,在script2中,定义了名为
BOOK和NAME两个变量
2 用户输入 read命令告诉shell要从标准输入中读入一个
字符串
3 控制 这个脚本中包括if..then..else..if控制语句,另外还
有while、case和for
4 环境 脚本使用一个名为HOME的变量.HOME的值是你
主目录的路径;9.3 smsh1-----命令行解析;9.4.1 if语句做些什么?
答案:条件检测
程序如何表示成功
(1)exit(0)表示成功
grep程序调用函数exit(0)来表明成功.所有的Unix程序都遵从以0退出表明成功这一惯例.比如,diff命令用来比较两个文本文件.类似地,mv.cp和rm都以相同的方式表明成功.
(2)带有else的if语句
else部分就像then部分一样,可以包含任意数量的命
;9.4.2 if是如何工作的?;1、增加一层:process
smsh1的控制流从splitline直接到fork,每个命令都被直接传给exec.新的版本中,以if.then或者fi开始的行和条件失败时then语句块中的命令行不传给exec.添加if语句后使命令处理变得复杂,所以要写一个名为process的函数来包含这些复杂的代码.;2、process做些什么
process通过寻找关键字,比如if.then和fi,来管理脚本流程,在适当的时候调用fork和exec.process必须记录条件命令的结果以便能够处理then和else块.
3、process是如何工作的?
代码区域、 运行状态
;smsh2.c;shell包括两类变量:局部变量和环境变量;变量名是字符A~Z,a~z,0~9和_的组合.第一个字母不能是数字.变量名对大小写敏感.
变量的值是字符串.变量都是字符串类型的,没有数值类型的变量.所有的操作都是字符串操
列出所有变量使用set命令. Set命令列出当前shell定义的所有变量.;9.5.2 变量的存储;9.5.3 增加变量命令:Built-ins;9.6.1 使用环境
人们喜欢按照自己的喜好设置自己的电脑,环境不是shell的一部分,但是shell包括一些可以让用户读取和修改环境的命令.学习它怎么工作,加到实现的代码中.
1、列出环境
env命令列出当前所有环境设置.env是一个普通的程序,而不是shell内置的命令.
2、更新环境
(1) var=value
通过变量赋值就可以更新环境
(2) export var
使用shell内置的命令向环境添加新的变量
(3) 在C程序中读入环境
使用标准的C库函数gentenv也可以得到环境变量的值.;9.6.2 什么是环境以及它如何工作;1、例子:showenv.c功能就像命令env:;2、但是exec清除了所有的数据对exec系统调用就像换脑,用目标程序的代码和数据替换调用程序的代码和数据.但是environ指针指向的数组是惟一的例外,当内核执行系统调用execve时,它将数组和字符串复制到新的程序的数据空间.在生成子进程的过程中,exec清除了原来进程中的所有代码和数据,插入新程序的代码和数据.3、子进程不能修改父进程的环境子进程中环境的设置是父进程环境的复本,子进程不能修改父进程的环境,因为在进程调用fork和exec时整个环境都被??动的复制了,所以通过环境来传递数据比较方便,快捷.;9.6.3 在smsh中增加环境处理
您可能关注的文档
- 信号与系统Chap2.ppt
- BX121028俞佳星实验4 Linux进程间通信.doc
- 信号与系统第6章第2讲.ppt
- 2014泰安二模.doc
- C++ 第4章 预处理指令.doc
- C++程序设计 第11章 C++IO流类库.ppt
- c++程序设计 杨俊清第1章 最简单C++程序.ppt
- C++类和对象习题与解答.doc
- C3-三种基本结构程序设计-2010.10.9更新.ppt
- C51特点和使用.doc
- 解析卷-鲁教版(五四制)8年级数学下册试题附参考答案详解【能力提升】.docx
- 解析卷-鲁教版(五四制)8年级数学下册试题附完整答案详解【各地真题】.docx
- 解析卷-鲁教版(五四制)8年级数学下册试题必考题附答案详解.docx
- 中学生职业生涯规划课件.pptx
- 解析卷-鲁教版(五四制)8年级数学下册试题附参考答案详解(培优).docx
- 解析卷-鲁教版(五四制)8年级数学下册试题带答案详解(完整版).docx
- 解析卷-鲁教版(五四制)8年级数学下册试题及完整答案详解【必刷】.docx
- 解析卷-鲁教版(五四制)8年级数学下册试题含答案详解(培优A卷).docx
- 解析卷-鲁教版(五四制)8年级数学下册试题及答案详解(网校专用).docx
- 解析卷-鲁教版(五四制)8年级数学下册试题及完整答案详解(必刷).docx
文档评论(0)