【精品】linux shell程序设计(可编辑.ppt

上传人:1595****071 文档编号:86273438 上传时间:2023-04-14 格式:PPT 页数:88 大小:668.50KB
返回 下载 相关 举报
【精品】linux shell程序设计(可编辑.ppt_第1页
第1页 / 共88页
【精品】linux shell程序设计(可编辑.ppt_第2页
第2页 / 共88页
点击查看更多>>
资源描述

《【精品】linux shell程序设计(可编辑.ppt》由会员分享,可在线阅读,更多相关《【精品】linux shell程序设计(可编辑.ppt(88页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、Linux shell程序设计 主要内容主要内容 n nshell的主要特点、类型、建立和执行的方式n nbash变量的分类、定义形式及引用规则n n各种控制语句的格式、功能及流程n nbash中算术运算的使用n nbash函数的构成及使用规则n nbash中的内置命令主要内容主要内容n n4.1 shell 概述n n4.2 命令历史n n4.3 名称补全n n4.4 别名n n4.5 shell特殊字符n n4.6 shell变量n n4.7 参数置换变量n n4.8 算术运算n n4.9 控制结构n n4.10 函数n n4.11 作业控制n n4.12 shell脚本调试4.1 she

2、ll概述概述4.1.1 shell的特点和主要版本的特点和主要版本n n作为命令解释程序作为命令解释程序n n一种高级程序设计语言,它有变量,关键字,有各种控制一种高级程序设计语言,它有变量,关键字,有各种控制语句,如语句,如if if、casecase、whilewhile、forfor等语句,支持函数模块,有等语句,支持函数模块,有自己的语法结构自己的语法结构1.shell1.shell的特点的特点的特点的特点l l组合新命令组合新命令l l直接使用直接使用shellshell的内置命令的内置命令l l结构化的程序模块结构化的程序模块l l可配置的环境可配置的环境l l 提供了文件名扩展字

3、符提供了文件名扩展字符l l 灵活地使用数据流灵活地使用数据流l l 在后台执行命令在后台执行命令l l 高级的命令语言高级的命令语言2 2shellshell的种类的种类的种类的种类(1)Bourne shell(1)Bourne shell(简称(简称shsh)(2)C shell(2)C shell(简称(简称cshcsh)(3)Korn shell(3)Korn shell(简称(简称kshksh)(4)Bourne Again shell(4)Bourne Again shell(即即bash)bash)4.1 shell概述概述4.1.1 shell的特点和主要版本的特点和主要版本

4、4.1 shell概述概述4.1.3 shell脚本的建立和执行脚本的建立和执行1.shell1.shell脚本的建立脚本的建立 建立建立shellshell脚本呢的步骤与建立普通文本文件的方式相同,可脚本呢的步骤与建立普通文本文件的方式相同,可以利用编辑器(如以利用编辑器(如vi vi)进行程序录入和编辑加工。)进行程序录入和编辑加工。2 2执行执行shellshell脚本的方式脚本的方式 执行执行shellshell脚本的方式基本上有脚本的方式基本上有三种三种:(1)(1)输入定向到输入定向到shellshell脚本脚本$bash$bash 脚本名脚本名4.1 shell概述概述4.1.3

5、 shell脚本的建立和执行脚本的建立和执行2 2执行执行shellshell脚本的方式脚本的方式 (2)(2)以脚本名作为参数以脚本名作为参数 其一般形式是:其一般形式是:$bash$bash 脚本名脚本名 参数参数 如果以目前如果以目前shellshell(以(以 表示)执行一个表示)执行一个shellshell脚本,则可以使用脚本,则可以使用如下简便形式:如下简便形式:$脚本名脚本名 参数参数 (3)(3)将将shellshell脚本的权限设置为可执行,然后在提示符下直接执脚本的权限设置为可执行,然后在提示符下直接执行它。行它。$chmod a+x ex1$chmod a+x ex1$P

6、ATH=$PATH:.$PATH=$PATH:.$ex1$ex1注意:此时该脚本所在的目录应被包含在命令搜索路径注意:此时该脚本所在的目录应被包含在命令搜索路径(PATH)(PATH)中中4.2 命令历史命令历史4.2.1 显示历史命令显示历史命令语法格式是:语法格式是:history history option arg option arg n n如果不带任何参数,则如果不带任何参数,则historyhistory命令会显示历史命令的清单命令会显示历史命令的清单 n n如果如果history history 后给出一个正整数后给出一个正整数(如如50)50),就只显示历史表中的最,就只显示

7、历史表中的最后后5050行命令行命令 n n常用的选项有:常用的选项有:l l -a -a 在历史文件中添加在历史文件中添加“新新”历史命令行。历史命令行。l l -n -n 从历史文件中读取尚未读入的历史命令行,添加到当前历史清单中。从历史文件中读取尚未读入的历史命令行,添加到当前历史清单中。l l -r -r 读取历史文件的内容,并把它作为当前的历史命令。读取历史文件的内容,并把它作为当前的历史命令。l l -w -w 把当前的历史写到历史文件中,覆盖原有内容。把当前的历史写到历史文件中,覆盖原有内容。l l -c -c 删除历史清单中所有的项。删除历史清单中所有的项。4.2 命令历史命令

8、历史4.2.2 执行历史命令执行历史命令n n执行历史命令执行历史命令是命令替换之一,它以字符是命令替换之一,它以字符“!”开开头、后随头、后随1 1个或多个字符来定义用户所需的某种类个或多个字符来定义用户所需的某种类型的历史命令型的历史命令 基本的事件指定字格式基本的事件指定字格式 格格 式式 意意 义义 !重复上一条命令,也就是重复上一条命令,也就是“!-1”“!-1”!n!n 重新执行第重新执行第n n条历史命令条历史命令 !-n!-n 重新执行倒数第重新执行倒数第n n条历史命令。条历史命令。!-1!-1就等于就等于!string!string 重新执行以字符串重新执行以字符串stri

9、ngstring开头的最近的历史命令行。开头的最近的历史命令行。!?string?!?string?重新执行最近的、包含字符串重新执行最近的、包含字符串stringstring的那条历史命令的那条历史命令 !#!#到现在为止所输入的整个命令行到现在为止所输入的整个命令行 4.2 命令历史命令历史4.2.3 配置历史命令环境配置历史命令环境n n在默认方式下,在默认方式下,bashbash使用用户主目录下面的文件使用用户主目录下面的文件“.bash_history”“.bash_history”来保存命令历史来保存命令历史 n n改变存放历史命令的文件改变存放历史命令的文件$HISTFILE=/

10、home/mengqc/.myhistory$HISTFILE=/home/mengqc/.myhistoryn n重新设定能够保留的命令个数重新设定能够保留的命令个数$HISTSIZE=600$HISTSIZE=600 4.3 名称补全名称补全 可以输入目录名或文件名的开头部分,然后按Tab键,Linux根据输入的字母查找以这些字母开头的目录或文件,并自动补全剩余的部分。4.4 别别 名名 4.4.1 定义别名定义别名一般语法格式为:alias name=valuen n如果没有指定参数,将在标准输出(屏幕)上显如果没有指定参数,将在标准输出(屏幕)上显示别名清单示别名清单 n n定义别名时

11、,往往用单引号将它代表的内容括起定义别名时,往往用单引号将它代表的内容括起来,从而防止来,从而防止shellshell对其中的内容产生歧义,如对对其中的内容产生歧义,如对空格和特殊字符另作解释空格和特殊字符另作解释4.4 别别 名名 4.4.2 取消别名取消别名n n如果想取消先前定义的别名,可使用如下命令:如果想取消先前定义的别名,可使用如下命令:unalias name unalias namen n可以一次将所有的别名都从别名表中删除,使用可以一次将所有的别名都从别名表中删除,使用如下命令:如下命令:unalias-a unalias-a 4.5 shell特殊字符特殊字符 4.5.1

12、通配符通配符1 1一般通配符一般通配符n n*(星星号号),它它匹匹配配任任意意字字符符的的0 0次次或或多多次次出出现现 ,f*,f*可可以以匹匹配配f,fa,f1,fa2,ffa.sf,fa,f1,fa2,ffa.sn n?(问问号号),它它匹匹配配任任意意一一个个字字符符,f?,f?可可以以匹匹配配f1,fa,fb,f1,fa,fb,不不能能匹匹配配fabc,f12fabc,f12n n (一一对对方方括括号号),其其中中有有一一个个字字符符组组。其其作作用用是是匹匹配配该该字字符符组组所所限限定定的的任任何何一一个个字字符符.fabcdfabcd可可以以匹匹配配fa,fb,fc,fdf

13、a,fb,fc,fd,不不能能匹匹配配f1,fa1,fabf1,fa1,fab等,也可写作等,也可写作fa-d.fa-d.n n!(惊惊叹叹号号),如如果果它它紧紧跟跟在在一一对对方方括括号号的的左左方方括括号号()之之后后,则则表表示示不不在在一一对对方方括括号号中中所所列列出出的的字字符符 f!1-9.cf!1-9.c表表示示以以f f开开头头,后面一个字符不是数字后面一个字符不是数字1-91-9的的.c.c文件名。文件名。4.5 shell特殊字符特殊字符 4.5.1 通配符通配符2模式表达式 是那些包含一个或多个通配符的字 n n*(*(模模式式表表)匹匹配配给给定定模模式式表表中中“

14、模模式式”的的0 0次次或或多多次次出出现现,各模式之间以各模式之间以“”分开(下同)分开(下同)file*(.c|.o)file*(.c|.o)可可匹匹配配file,file,file.c,file.c,file.o,file.o,file.c.c,file.c.c,file.o.o,file.o.o,file.c.o,file.c.o,file.o.cfile.o.c等,但不能匹配等,但不能匹配file.h,file.sfile.h,file.s等。等。n n+(+(模式表模式表)匹配给定模式表中匹配给定模式表中“模式模式”的的1 1次或多次出现次或多次出现file+(.c|.o)file

15、+(.c|.o)可可匹匹配配file.c,file.c,file.o,file.o,file.c.c,file.c.c,file.o.o,file.o.o,file.c.o,file.c.o,file.o.cfile.o.c等等,但不能匹配但不能匹配filefile等。等。4.5 shell特殊字符特殊字符 4.5.1 通配符通配符2模式表达式n n?(?(模式表模式表)匹配模式表中任何一种匹配模式表中任何一种“模式模式”的的0 0次或次或1 1次出现次出现filefile?(.c|.o)(.c|.o)可可匹匹配配file,file,file.c,file.c,file.o,file.o,但但

16、不不能能匹匹配配file.c.c,file.c.c,file.o.o,file.o.o,file.c.o,file.c.o,file.o.cfile.o.c等等n n(模式表模式表)仅匹配模式表中给定仅匹配模式表中给定“模式模式”的一次出现的一次出现 file(.c|.o)file(.c|.o)可可 匹匹 配配 file.c,file.c,file.o,file.o,但但 不不 能能 匹匹 配配 filefile,file.c.c,file.c.c,file.o.o,file.o.o,file.c.o,file.o.cfile.c.o,file.o.c等等n n!(!(模模式式表表)除除给给定

17、定模模式式表表中中的的一一个个“模模式式”之之外外,可可以以匹匹配配其其他任何东西他任何东西 4.5 shell特殊字符特殊字符 4.5.2 引号引号1 1双引号双引号n n由双引号括起来的字符(除由双引号括起来的字符(除$、倒引号(、倒引号()和反斜线()和反斜线()外)均作为普通字符对待。)外)均作为普通字符对待。2 2单引号单引号n n由单引号括起来的字符由单引号括起来的字符全都全都全都全都作为普通字符出现作为普通字符出现3 3倒引号倒引号n n倒引号括起来的字符串被倒引号括起来的字符串被shellshell解释为命令行,在执行时,解释为命令行,在执行时,shellshell会先执行该命

18、令行,并以它的标准输出结果取代整会先执行该命令行,并以它的标准输出结果取代整个倒引号部分。个倒引号部分。n n倒引号还可以嵌套使用。但应注意,嵌套使用时内层的倒倒引号还可以嵌套使用。但应注意,嵌套使用时内层的倒引号必须用反斜线(引号必须用反斜线()将其转义。)将其转义。4.5 shell特殊字符特殊字符 4.5.3 输入输入/输出重定向符输出重定向符 自动自动打开三个标准文件,即打开三个标准文件,即标准输入文件标准输入文件(stdinstdin),),标准输出文件标准输出文件(stdoutstdout)和)和标准错误输出文件标准错误输出文件(stderrstderr)。)。1 1输入重定向符输

19、入重定向符 n n 一般形式是:命令一般形式是:命令 文件名文件名 如:如:$score file1$score 文件名文件名 如:如:$who abc$who abc3 3输出附加定向符输出附加定向符n n一般形式是:命令一般形式是:命令文件名文件名 如:如:$ps-l psfile$ps-l psfilen n输入和输出重新定向可以连在一起使用。例如:输入和输出重新定向可以连在一起使用。例如:$wc -l outfile$wc -l outfile4 4即时文件定向符即时文件定向符n n即时文件的形式是:即时文件的形式是:命令命令 参数参数 标记符标记符 输入行输入行 标记符标记符 注意:

20、注意:标记符要成对出现标记符要成对出现 n n例如:例如:mail$1 !mail$1 2 文件名文件名 命令命令 2 2 文件名文件名n n标准输出标准输出和和标准错误输出标准错误输出可以重定向到可以重定向到同一个文件同一个文件,一般,一般形式是:形式是:command$file command$file 等价于等价于下面形式的命令:下面形式的命令:command file 2&1 command file 2&14.5 shell特殊字符特殊字符 4.5.3 输入输入/输出重定向符输出重定向符4.5 shell特殊字符特殊字符 4.5.4 注释、管道线和后台命令注释、管道线和后台命令 1

21、1注释注释#!/bin/bash#!/bin/bash#If no arguments,then listing the current directory.#If no arguments,then listing the current directory.#Otherwise,listing each subdirectory.#Otherwise,listing each subdirectory.2 2管道线管道线 ls-l$HOME|wc l ls-l$HOME|wc l ls|grep m?.c|wc l ls|grep m?.c|wc l3 3后台命令后台命令$gcc m1.c

22、&$gcc m1.c&4.5 shell特殊字符特殊字符 4.5.5 命令执行操作符命令执行操作符1 1顺序执行顺序执行 在执行时,以分号隔开的各条命令从左到右依次执行在执行时,以分号隔开的各条命令从左到右依次执行 pwd;who|wc -l;cd /usr/bin pwd;who|wc -l;cd /usr/bin2 2逻辑与逻辑与n n命令命令1&1&命令命令2 2n n其功能是,先执行命令其功能是,先执行命令1 1,如果执行成功,才执行命令,如果执行成功,才执行命令2 2;否则,若命令否则,若命令1 1执行不成功,则不执行命令执行不成功,则不执行命令2 2。3 3逻辑或逻辑或n n命令命

23、令1|1|命令命令2 2n n其功能是,先执行命令其功能是,先执行命令1 1,如果执行不成功,则执行命令,如果执行不成功,则执行命令2 2;否则,若命令;否则,若命令1 1执行成功,则不执行命令执行成功,则不执行命令2 2。4.5 shell特殊字符特殊字符 4.5.6 成组命令成组命令1 1 形式形式 以花括号括起来的全部命令可视为语法上的一条命令,以花括号括起来的全部命令可视为语法上的一条命令,出现在管道符的一边。出现在管道符的一边。$echo “User Report for date .”;who;echo “User Report for date .”;who;|pr|pr 使用花

24、括号时在格式上应注意使用花括号时在格式上应注意:左括号左括号“”“”后面应有一后面应有一个空格个空格;右括号右括号“”“”之前应有一个分号(之前应有一个分号(;)2 2()()形式形式 (echo Current directory is pwd .echo Current directory is pwd .cd /home/mengqc;ls-l;cd /home/mengqc;ls-l;cp m1 em1&rm m1 cp m1 em1&rm m1 cat em1 cat em1)|pr|pr 二者存在重要区别:n n用花括号括起来的成组命令只是在本用花括号括起来的成组命令只是在本she

25、llshell内执行内执行命令表,不产生新的进程;命令表,不产生新的进程;n n用圆括号括起来的成组命令是在新的子用圆括号括起来的成组命令是在新的子shellshell内执内执行,要建立新的子进程。行,要建立新的子进程。4.5 shell特殊字符特殊字符 4.5.6 成组命令成组命令4.6 shell变量变量4.6.1 用户定义的变量用户定义的变量 1 1变变量量名名是是以以字字母母或或下下线线符符打打头头的的字字母母、数数字字和和下下线符序列,并且大小写字母意义不同。线符序列,并且大小写字母意义不同。2.2.定义变量并赋值定义变量并赋值的一般形式是:的一般形式是:变量名变量名=字符串字符串,

26、例:例:myfile=/home/helena/m1myfile=/home/helena/m13 3引用变量值引用变量值 在变量名前面加上一个符号在变量名前面加上一个符号“$”“$”n n如果在赋给变量的值中要含有空格、制表符或换行符,那如果在赋给变量的值中要含有空格、制表符或换行符,那么,就应该用双引号把这个字符串括起来。么,就应该用双引号把这个字符串括起来。$names=Zhangsan Lisi Wangwu$names=Zhangsan Lisi Wangwu$echo$names$echo$names n n如果变量值须出现在长字符串的开头或者中间,为了使变如果变量值须出现在长字符

27、串的开头或者中间,为了使变量名与其后的字符区分开,避免量名与其后的字符区分开,避免shellshell把它与其它字符混在把它与其它字符混在一起视为一个新变量,则应该用花括号将该变量名括起来。一起视为一个新变量,则应该用花括号将该变量名括起来。例如,例如,$dir=/usr/meng$dir=/usr/meng$cat$dirqc/m1.c$cat$dirqc/m1.c4 4命令替换命令替换n n有两种形式的命令替换:一种是有两种形式的命令替换:一种是使用倒引号引用命令使用倒引号引用命令使用倒引号引用命令使用倒引号引用命令,其,其一般形式是:一般形式是:命令表命令表命令表命令表 n n另一种形式

28、是:另一种形式是:$($(命令表命令表)如:如:$dir=$(pwd)$dir=$(pwd)$echo$(pwd;cd /home/mengqc;ls -d)$echo$(pwd;cd /home/mengqc;ls -d)4.6 shell变量变量4.6.1 用户定义的变量用户定义的变量 4.6 shell变量变量4.6.2 数组数组n nbashbash只提供一维数组,并且没有限定数组的大小。类只提供一维数组,并且没有限定数组的大小。类似与似与C C语言,数组元素的语言,数组元素的下标由下标由下标由下标由0 0开始编号开始编号开始编号开始编号。n n对数组元素赋值的一般形式是:对数组元素赋

29、值的一般形式是:数组名数组名数组名数组名 下标下标下标下标 值值值值n n可以用可以用declaredeclare命令显式声明一个数组,一般形式是:命令显式声明一个数组,一般形式是:declare -a declare -a 数组名数组名数组名数组名n n读取数组元素值的一般格式是:读取数组元素值的一般格式是:$数组名数组名数组名数组名 下标下标下标下标4.6 shell变量变量4.6.2 数组数组n n定义一个数组并为其赋初值的一般形式是:定义一个数组并为其赋初值的一般形式是:数组名数组名数组名数组名=(=(值值值值1 1 值值值值2 2 值值值值n)n)其中,各个值之间以空格分开。其中,各

30、个值之间以空格分开。n n若没有给出数组元素的下标,则数组名表示下标为若没有给出数组元素的下标,则数组名表示下标为0 0的数组元素的数组元素n n使用使用*或或当作下标,则会以数组中所有元素取代当作下标,则会以数组中所有元素取代*或或4.6 shell变量变量4.6.3 变量引用变量引用有效的变量引用表达式有以下形式:有效的变量引用表达式有以下形式:n n$name$name#pattern$name$name#patternn n$name$name#pattern$name$name#patternn n$namen$name%pattern$namen$name%patternn n$n

31、ame*$name%pattern$name*$name%patternn n$name$#$name$#n n$name:-word$#*$name:-word$#*n n$name:=word$#name$name:=word$#name n n$name:?word$#name*$name:?word$#name*n n$name:+word$#name$name:+word$#namen n表达式$name表示变量name的值,若变量未定义,则用空值替换。n n表达式$name将被变量name的值替换。用花括号括起name,目的在于把变量名与后面的字符分隔开,避免出现混淆。替换后花括号

32、被取消。n n$namen表示数组变量name中第n个元素的值。4.6 shell变量变量4.6.3 变量引用变量引用n n表达式$name*和$name都表示数组name中所有非空元素的值,每个元素的值用空格分开。如果用双引号把它们都括起来,那么二者的含义就有区别:对于“$name*”,它被扩展成一个词(即字符串),这个词由以空格分开的各个数组元素组成;对于“$name”,它被扩展成多个词,每个数组元素是一个词。如果数组name中没有元素,则$name被扩展为空串。4.6 shell变量变量4.6.3 变量引用变量引用n n表达式表达式$name#pattern$name#pattern和和

33、$name#pattern$name#pattern 如果如果pattern(Shellpattern(Shell模式模式)与与namename值的开头匹配,那么值的开头匹配,那么namename的值去掉匹配部分后的结果就是该表达式的值的值去掉匹配部分后的结果就是该表达式的值;否否则则,name,name的值就是该表达式的值。在第一种格式中,的值就是该表达式的值。在第一种格式中,namename值去掉的部分是与值去掉的部分是与patternpattern匹配的最少的部分;而匹配的最少的部分;而第二种格式中,第二种格式中,namename值去掉的部分是与值去掉的部分是与patternpatter

34、n匹配的匹配的最多的部分。最多的部分。4.6 shell变量变量4.6.3 变量引用变量引用4.6 shell变量变量4.6.4 输入输入/输出命令输出命令1read命令 可以利用可以利用readread命令从键盘上读取数据,然后赋给指定命令从键盘上读取数据,然后赋给指定的变量。的变量。readread命令的一般格式是:命令的一般格式是:read read 变量变量1 1 变量变量2 2 n n变量个数与给定数据个数相同,则依次对应赋值变量个数与给定数据个数相同,则依次对应赋值n n变量个数少于数据个数,则从左至右对应赋值,但变量个数少于数据个数,则从左至右对应赋值,但最后一个变量被赋予剩余的

35、所有数据。最后一个变量被赋予剩余的所有数据。n n变量个数多于给定数据个数,则依次对应赋值,而变量个数多于给定数据个数,则依次对应赋值,而没有数据与之对应的变量取空串没有数据与之对应的变量取空串2 echo命令 显示其后的变量值或者直接显示它后面的字符串如果echo命令带有选项“-e”,那么在其后的参数中可以有以下转义字符:a b c e f n r t v m xm 4.6 shell变量变量4.6.4 输入输入/输出命令输出命令4.6 shell变量变量4.6.5 位置参数位置参数1 1位置参数及其引用位置参数及其引用n n位置变量的名称很特别,分别是位置变量的名称很特别,分别是0 0,1

36、 1,2 2,n n命令行实参与脚本中位置变量的对应关系如下所示:命令行实参与脚本中位置变量的对应关系如下所示:exam1 m1 m2 m3 m4 exam1 m1 m2 m3 m4$0$1$2$3$4$5$6$7$8$9$10$11$0$1$2$3$4$5$6$7$8$9$10$11 引用它们的方式依次是引用它们的方式依次是$0,$1,$2,$9,$10,$11$0,$1,$2,$9,$10,$11等。等。其中,其中,$0$0始终表示命令名或始终表示命令名或shellshell脚本名。脚本名。n n位置变量不能通过一般赋值的方式直接赋值位置变量不能通过一般赋值的方式直接赋值位置变量不能通过一

37、般赋值的方式直接赋值位置变量不能通过一般赋值的方式直接赋值n n 通过命令行上对应位置的实参传值通过命令行上对应位置的实参传值 2 2用用setset命令为位置参数赋值命令为位置参数赋值 set m1.c m2.c4.6 shell变量变量4.6.6 移动位置参数移动位置参数n n每执行一次每执行一次shiftshift命令,就把命令行上的实参向左命令,就把命令行上的实参向左移一位,即相当于位置参数向右移动一个位置。移一位,即相当于位置参数向右移动一个位置。l l 命令行:命令行:ex7 A ex7 A B C D E F B C D E Fl l 原位置参数:原位置参数:$0$1$0$1$2

38、$3$4$5$6$2$3$4$5$6l l 命令行:命令行:ex7 B C D E F ex7 B C D E Fl l移位后位置参数:移位后位置参数:$0$1$2$3$4$5$0$1$2$3$4$5n nshiftshift命令不能将命令不能将$0$0移走,所以经移走,所以经shiftshift右移位置参数右移位置参数后,后,$0$0的值不会发生变化。的值不会发生变化。n nshiftshift命令可以带有一个整数作为参数命令可以带有一个整数作为参数4.6 shell变量变量4.6.7 预先定义的特殊变量预先定义的特殊变量n n$#$#命令行上参数的个数,但不包含命令行上参数的个数,但不包含

39、shellshell脚本名本脚本名本身。因此,身。因此,$#$#可以给出实际参数的个数。可以给出实际参数的个数。n n$?上一条命令执行后的返回值(也称作上一条命令执行后的返回值(也称作“返回码返回码”、“退出状态退出状态”、“退出码退出码”等)。它是一个十进制等)。它是一个十进制数。数。n n$当前进程的进程号。当前进程的进程号。n n$!上一个后台命令对应的进程号,这是一个由上一个后台命令对应的进程号,这是一个由1515位数字构成的数字串。位数字构成的数字串。4.6 shell变量变量4.6.7 预先定义的特殊变量预先定义的特殊变量n n$由当前shell设置的执行标志名组成的字符串。n

40、n$*表示在命令行中实际给出的所有实参字符串,它并不仅限于9个实参。n n$它与$*基本功能相同,即表示在命令行中给出的所有实参。但“$”与“$*”不同。4.6 shell变量变量4.6.8 环境变量环境变量1 1常用的环境变量常用的环境变量n nHOMEHOME:用户主目录的全路径名用户主目录的全路径名 n nLOGNAMELOGNAME:即你的注册名,由即你的注册名,由LinuxLinux自动设置自动设置n nMAILMAIL:你的系统信箱的路径你的系统信箱的路径n nPATHPATH:shellshell从中查找命令的目录列表。可以设置它,从中查找命令的目录列表。可以设置它,如:如:PA

41、TH=$PATH:$HOME/binPATH=$PATH:$HOME/binn nPS1PS1:shellshell的主提示符。的主提示符。bash bash默认的主提示符一般为默认的主提示符一般为“s-“s-v$”v$”。其中。其中,s,s表示表示shellshell的名称;的名称;vv表示表示bashbash的版本号的版本号 PS1=Enter Command PS1=Enter Command n nPWDPWD:你当前工作目录的路径你当前工作目录的路径n nSHELLSHELL:你当前使用的你当前使用的shellshelln nTERMTERM:你的终端类型你的终端类型2 2使用环境变

42、量使用环境变量n n如果要使用环境变量或其它如果要使用环境变量或其它如果要使用环境变量或其它如果要使用环境变量或其它shellshell变量的值,必须在变量名变量的值,必须在变量名变量的值,必须在变量名变量的值,必须在变量名之前加上一个之前加上一个之前加上一个之前加上一个“$”“$”符号,不能直接使用变量名。符号,不能直接使用变量名。符号,不能直接使用变量名。符号,不能直接使用变量名。n n如:如:cd$HOMEcd$HOME3 3删除环境变量删除环境变量n n$unset NAME$unset NAME4.6 shell变量变量4.6.8 环境变量环境变量4.6 shell变量变量4.6.9

43、 环境文件环境文件n nbashbash的环境文件包括的环境文件包括.bash_profile.bash_profile文件、文件、.bashrc.bashrc文件、文件、.bash_logout.bash_logout文件等。文件等。n n在在.bash_profile.bash_profile中,设置了环境变量和文件掩码中,设置了环境变量和文件掩码(umaskumask)n n名为名为.bashrc.bashrc的脚本的脚本,每次启动,每次启动bashbash时便会执行它。它时便会执行它。它只含有针对只含有针对bashbash的命令,可以用来设置别名。的命令,可以用来设置别名。.bashr

44、c.bashrc在在.bash_profile.bash_profile之后执行之后执行 n n.bash_logout.bash_logout,它仅在退出注册的时候运行,它仅在退出注册的时候运行 4.6 shell变量变量4.6.10 export语句与环境设置语句与环境设置1 1exportexport语句语句n n一个进程在自己的环境中定义的变量是局部变量,仅限于一个进程在自己的环境中定义的变量是局部变量,仅限于自身范围,不能自动传给其子进程。就是说,子进程只能自身范围,不能自动传给其子进程。就是说,子进程只能继承父进程的公用区和转出区中的数据,而每个进程的数继承父进程的公用区和转出区中

45、的数据,而每个进程的数据区和栈区是私有的,不能继承。为了使其后的各个子进据区和栈区是私有的,不能继承。为了使其后的各个子进程能继承父进程中定义的变量,就必须用程能继承父进程中定义的变量,就必须用exportexport(转出)(转出)命令将这些变量送入进程转出区。命令将这些变量送入进程转出区。n nexportexport命令的一般使用形式是:命令的一般使用形式是:export export 变量名变量名 2 2环境变量的设置和显示环境变量的设置和显示n n设置变量要用如下形式:设置变量要用如下形式:变量名变量名=值值n n如果变量值的字符串中如果变量值的字符串中带有空格带有空格等特殊字符,需

46、要用引号等特殊字符,需要用引号把整个字符串括起来。把整个字符串括起来。例如:例如:$PS1=OK$PS1=OK n n利用利用exportexport命令将这些变量输出命令将这些变量输出,使它们成为公用量。如:,使它们成为公用量。如:export HOME HZ LOGNAME TERM export HOME HZ LOGNAME TERMn n可以利用可以利用envenv命令列出所有的环境变量命令列出所有的环境变量,包括本进程及以,包括本进程及以前的前的“祖先进程祖先进程”所输出的变量所输出的变量4.6 shell变量变量4.6.10 export语句与环境设置语句与环境设置3 3sets

47、et命令命令n nsetset命令的功能主要有三个:命令的功能主要有三个:l l 显示迄今为止所定义的全部变量,包括局部量和公用量;显示迄今为止所定义的全部变量,包括局部量和公用量;l l 用来设定位置参数的值;用来设定位置参数的值;l l 改变执行改变执行shellshell脚本时的选项设定,可以使用户改变脚本时的选项设定,可以使用户改变shellshell的功的功能。能。n n设置标志的一般形式是:设置标志的一般形式是:set -set -标志标志 例如:例如:set -xset -xn n关闭标志的一般形式是:关闭标志的一般形式是:set +set +标志标志 例如:例如:set +xs

48、et +x4.6 shell变量变量4.6.10 export语句与环境设置语句与环境设置4.8 算算 术术 运运 算算n nbashbash中执行整数算术运算的命令是中执行整数算术运算的命令是letlet,其语法格式为:,其语法格式为:let arg let arg n n其中其中argarg是单独的算术表达式。它使用是单独的算术表达式。它使用C C语言中表达式的语言中表达式的语法、优先级和结合性。除语法、优先级和结合性。除+、-和逗号和逗号(,)之外,所之外,所有整型运算符都得到支持有整型运算符都得到支持,此外,还提供了方幂运算符此外,还提供了方幂运算符“*”“*”。n n在算术表达式中直

49、接利用名称访问命名的参数,不要前在算术表达式中直接利用名称访问命名的参数,不要前面带有面带有“$”“$”符号符号n nlet let 命令的命令的替代表示形式替代表示形式替代表示形式替代表示形式是:是:(算术表达式算术表达式算术表达式算术表达式)4.8 算算 术术 运运 算算n n例如:例如:let j=i*6+2 let j=i*6+2 等价于:等价于:(j=i*6+2)(j=i*6+2)如果表达式的值是非如果表达式的值是非0 0,那么返回的状态值是,那么返回的状态值是0 0;否则,;否则,返回的状态值是返回的状态值是1 1。n n当表达式中有当表达式中有shellshell的特殊字符时,的

50、特殊字符时,必须用双引号将其括必须用双引号将其括必须用双引号将其括必须用双引号将其括起来起来起来起来。例如。例如,let val=a|blet val=a|bn n只有使用只有使用$($(算术表达式算术表达式算术表达式算术表达式)形式才能返回表达式的值形式才能返回表达式的值4.9 控制结构控制结构 4.9.1 if语句语句n nif if语句用于条件控制结构语句用于条件控制结构中,其一般格式为:中,其一般格式为:if if 测试条件测试条件 then then 命令命令1 1 else else 命令命令2 2 fi fin n其中,其中,if if、thenthen、elseelse和和fi

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 小学资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁