网站大量收购独家精品文档,联系QQ:2885784924

Chapter9-可编程shell_、shell变量和环境.ppt

  1. 1、本文档共26页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 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中增加环境处理

文档评论(0)

xcs88858 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档