




已阅读5页,还剩83页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第4章Linux shell的编程,主要内容shell的主要特征,类型,建立和执行的方式bash变量的分类,定义形式和引用规则的各种控制语句的形式,功能和过程bash中使用算术运算的bash函数的构成和使用规则bash中内置的指令, 主要内容4.1 shell概述4.2命令历史4.3名称补充4.4别名4.5 shell特殊字符4.6 shell变量,4.7参数替换变量4.8算术运算4.9控制结构4.10函数4.11作业控制4.12 shell脚本调试, 4.1 shell概述4.11 shell的特征和主要版本指令解释程序的高级编程语言之一,支持变量、关键字、各种控制语句,例如if、case、while、for等语句、函数模块, 具有自己的语法结构的1.1.shell特征组合新指令,提供了一种可以直接使用shell的内置指令结构化程序模块配置的环境,提供了文件名扩展字符灵活地使用数据流在后台执行指令的高级指令语言的1.shell类型(bourne shell (sh ) (2) cshell (csh ) (3) Korn shell (ksh ) (4) bournegainshell (bash )、4.1 shell的概要4.1.1 shell的特征和主要版本、4.1 shell的概要4.1.2 shell程序$catex1datepwd,【例4.2】具有控制结构的shell程序(文件名为ex2 )。 $catex2#! /bin/bash#Ifnoarguments,thenlistingthecurrentdirectory.# otherwise, listingeachsubdirectory.if test $ #=0the nls.elseforidols-l $ I|grep ddonefi 4.1 shell程序的示例,4.1 shell概述4.1.3 shell脚本的创建1 .创建shell脚本shell脚本的创建步骤与普通的文本文件的创建方法相同,可以使用编辑器(vi等)进行程序输入和编辑加工。 2 .运行shell脚本的方法运行shell脚本的方法基本上有以下三种: (1)输入shell脚本的方向性$bashabc3.输出附加方向性的常用形式是: $ps-lpsfile等命令文件名,用于打开输入和输出方向例如: $wc-loutfile4.即时文件的方向指定符即时文件的形式是指令参数标签输入行标签注意:标签成对出现的例子: mail$1文件名指令2文件名标准输出和标准错误输出在同一文件中在典型格式中,命令$文件相当于以下格式的命令:命令文件2 who|WC-l; cd/usr/bin2.逻辑和指令1who; 请注意,|pr中使用大括号时,的左括号“”后面必须有空格,右括号“”前面必须有分号(; 形式(echo currenttdirectoryis pwd . CD/home/Meng CQC; ls-l; CP m1em 1cd /家庭/孟QC; ls-d )、4.6 shell变量4.6.1用户定义变量、4.6 shell变量4.6.2数组和bash仅提供一维数组,并不限制数组的大小。 和c语言一样,数组元素的后缀从0开始。 可以使用declare命令显式声明数组名称后缀=值,以指定给数组元素的常用格式。 典型格式为$数组名称下标,4.6 shell变量4.6.2数组,定义数组并分配初始值的典型格式为数组名称=(值1值2值n )。 每个值用空格分隔。 如果没有指定数组元素的后缀,则如果数组名称使用*或作为下标,则数组中的所有元素将替换*或并引用4.6 shell变量4.6.3变量,有效的变量引用表达式是$ name $ name #。 pattern $ name * $ name % % pattern $ name $ # $ name :-word $ $ # * $ name :=word $ # name : word $ # name * $ name : word $ # name ,表达式$name表示变量name的值,如果未定义变量,则替换为null。 式$name被变量name的值替换。 大括号中的name的目的是分隔变量名称和后续字符,以避免混淆。 替换后,大括号被取消。 $namen表示数组变量name的第n个元素的值。4.6 shell变量4.6.3变量引用,表达式$name*和$name表示数组name中所有非空元素的值,每个元素的值用空格分隔。 用双引号括起来时,“$name*”会扩展为由以空格分隔的单个数组元素组成的单词(字符串)。对于“$name”,会扩展为多个单词,每个数组元素只有一个。 如果数组name中没有元素,$name将扩展为空字符串。4.6 shell变量4.6.3变量参照,式$name#pattern和$name#patternpattern 在第一种格式中,删除了name值的部分是与pattern最少匹配的部分;在第二种格式中,删除了name值的部分是与pattern最匹配的部分。 另外,4.6 shell变量4.6.3变量参照、4.6 shell变量4.6.4输入输出指令、1.read指令可通过read指令从键盘读取数据,分配给指定的变量。 如果read命令的一般格式与给定了read变量1变量2变量的个数的数据的个数相同,则在依次对应的代入变量的个数比数据的个数少的情况下,从左到右对应地进行代入,但在最后的变量中被提供剩馀的全部数据。 当变量的个数比预定的数据的个数多时,与顺序代入对应,数据对应的变量取空字符串,2.echo命令显示后续的变量的值或显示紧接其后的字符串。 如果echo命令带有“-e”选项,则后续参数包含以下转义字符:abcefnrtvm 有xm的4.6 shell变量4.6.4输入输出命令、4.6 shell变量4.6.5位置参数、1 .位置参数及其参照位置变量的名称特别,分别为0,1, 2、命令行执行参加脚本中的位置变量的对应关系如下: exam1m2m3m4$0$2$3$4$5$7$8$9$10 $11按顺序参照它们的方法为$0、$1、$2、$9、$9、$ 10 、$ 11 位置变量不能用通常的代入方法直接代入通过命令行上对应位置的实际参数值。 使用set命令将setm1.cm2.c、4.6shell变量4.6.6移动位置参数代入位置参数,在每次执行shift命令时,将命令行上的实际参数向左移动一个参数,是将位置参数向右移动一个命令行: ex7ABCDEF原始位置参数: $0$1$2$3$4$5$6命令行: ex7BCDEF移位后的位置参数: $0$1$2$3$4$5shift命令无法移动$0,因此按shift键位置shift命令不包含整数、4.6 shell变量4.6.7预定义的特殊变量、$#命令行上的参数数量和shell脚本名称本身作为参数。 因此,$#可以给出实际参数的数量。 $? 执行前一命令后的返回值(也称为“返回代码”、“转义状态”、“转义代码”等)。 这是十进制数。 当前进程的进程号。 $! 与上一个背景命令对应的进程号。 这是由15位数字组成的数字串。 4.6 shell变量4.6.7由预定义的特殊变量$-在当前shell中设置的执行标志名组成的字符串。 $*表示命令行中实际给予的所有参数字符串,并不限于九个参数。 $与$*的基本功能相同,它代表命令行中指定的所有实际参数。 但是,“$”和“$*”不同。 4.6 shell变量4.6.8环境变量,1 .常用环境变量HOME :用户主目录的完整路径名LOGNAME :你的登录名,Linux自动设置的MAIL :你的系统邮箱路径path:shell命令path=$path:$home/binps1:可以像shell的主提示符一样进行设置。 bash的默认主提示为“s-v$”。其中s表示shell的名称bash的版本号PS1=EnterCommandPWD :你当前工作目录的路径shellTERM :你的终端类型,2 .使用环境变量和其他shell变量的例如,cd$HOME3.环境变量$unsetNAME、4.6 shell变量4.6.8环境变量、4.6 shell变量4.6.9环境文件,bash环境文件包含. bash_profile文件、 bashrc文件、 bash _ l . bash_profile设置了一个名为. bashrc的脚本,名为环境变量和文件掩码(umask ),每次启动bash时都会执行该脚本。 仅包含用于bash的命令,可用于设置别名。 bashrc在. bash_profile之后执行. bash_logout,这仅在注册结束时执行,4.6 shell变量4.6.10export语句和环境设定,1.export语句过程在自己的环境中定义的变量是局部变量也就是说,子进程只能继承父进程的共同区域和转出区域的数据,而各进程的数据区域和堆栈区域不能私人继承。 为了允许后续的每个子进程继承父进程中定义的变量,必须使用export命令将这些变量发送到进程调用区域。 export命令的常用格式是export变量名称,2 .环境变量的设置和显示设置变量,如果变量名称=值变量值的字符串中包含空格等特殊字符,则必须用引号将整个字符串括起来。 例如: $PS1=OK 使用export命令将这些变量输出为通用量。 例如,exportHOMEHZLOGNAMETERM利用env命令,包含本进程和以前的“祖先进程”输出的变量,主要有4.6 shell变量4.6.10export语句和环境设定、3.set命令set命令的功能三个: 如果更改执行shell脚本时的选项设置,则用户可以更改shell的功能,其中包括局部量和公共量;值;用于设置位置参数; 设定标志的一般形式是set标志,例如set-t-xoff标志的一般形式是set标志,例如set x,4.6 shell变量4.6.10export语句和环境设定,4.8算术运算,bash中执行整数算术运算的命令是let 使用c语言表达式的语法、优先级和耦合性。 除了-和逗号(,)之外,支持所有整数运算符,还提供幂运算符“*”。 访问在算术表达式中直接使用名称命名的参数,且前面没有“$”符号的let命令的替代表示形式为(算术表达式)、4.8算术运算,例如letj=i*6 2”,如果(j=i*6)表达式的值不为0,则返回的状态值为0,否则如果表达式包含shell特殊字符,则必须用双引号括起来。 例如,letval=a|b 只能以$ (算术表达式)格式返回表达式的值。 4.9控制结构4.9.1if语句和if语句用于条件控制结构中,通常采用if测试条件then命令1else命令2fi的形式。 PS、PS、PS和PS是关键字。 例如,可以默认if test-f $1 thenecho $1isanordinaryfile. else echo $1isnotanordinaryfile. fi和if语句的else部分。 例如,if test-f $1 thenecho $1isanordinaryfile. fiif语句的else部分也可以是else-if结构。 使用关键字“elif”代替elseif。 例如,if测试- f $1 then pr $1elif测试- d $1 then (CD $ 1; pr * ) else echo $1isneitherafilenoradirectory. fi,4.9控制结构4.9.1if文件,if文件的更常用形式是: if命令表1then命令表2else命令表3fi,4.9控制结构4.9.1if文件,4. 另一个是用方括号括住测试条件。 这两种形式完全等价。例如,要测试位置参数$1是否是现有的通用文件,请写为test-f$1。 此外,“-f $ 1”第三种格式还可以将表达式test命令与多个系统运算符一起使用。 有四种运算符类别:文件测试运算符、字符串测试运算符、数字测试运算符和逻辑运算符。 1 .相关文件侧的测试,4.9控制结构4.9.2条件测试,2 .相关字符串侧的测试,4.9控制结构4.9.2条件测试,3 .相关系数值侧的测试,4.9控制结构4.9.2条件测试,4 .逻辑运算符上述测试条件在if语句和循
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 浙江省苍南县重点名校2024-2025学年初三下语文试题第四次月考试卷解答含解析
- 江西中医药大学《建筑工程虚拟显示技术》2023-2024学年第一学期期末试卷
- 蒙自县2025届三下数学期末综合测试模拟试题含解析
- 天津仁爱学院《英语3》2023-2024学年第二学期期末试卷
- 河南省三门峡卢氏县联考2024-2025学年初三联合模拟考试生物试题含解析
- 绥化学院《材料研究及分析方法》2023-2024学年第二学期期末试卷
- 黄金卷市级名校2025届初三3月开学考试英语试题文试卷含答案
- 洛阳文化旅游职业学院《舆情大数据分析》2023-2024学年第二学期期末试卷
- 上海第二工业大学《西医基础概论》2023-2024学年第一学期期末试卷
- 深圳北理莫斯科大学《大数据分析与应用综合实验(一)》2023-2024学年第二学期期末试卷
- 浙江省台州市2025届高三第二次教学质量评估化学试题及答案(台州二模)
- 2025至2030年中国单级悬臂式化工离心泵行业投资前景及策略咨询报告
- 【初中地理】七年级地理下册全册期末总复习(课件)-2024-2025学年七年级地理课件(人教版2024年)
- 2025年无锡南洋职业技术学院单招职业技能测试题库含答案
- 2025年东北三省三校高三一模高考英语试卷试题(含答案详解)
- (高清版)DB11∕T2280-2024城市韧性评价导则
- 2025年内蒙古民族幼儿师范高等专科学校单招职业适应性测试题库新版
- 《Web应用安全与防护》课件 项目8:SQL注入漏洞利用与防护
- Unit5OldtoysPartALet'stalk-Thinkandsay(课件)-人教PEP版(2024)英语三年级下册
- 测量不确定度评定和表示培训
- 城市供水系统管理
评论
0/150
提交评论