《chap22 shell及其shell编程(自学阅读).ppt》由会员分享,可在线阅读,更多相关《chap22 shell及其shell编程(自学阅读).ppt(41页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、shell shell 及及 shellshell编程编程概述概述 shellshell是是UNIXUNIX系统用用户与操作系统交互的最基本系统用用户与操作系统交互的最基本工具,实际上工具,实际上shellshell除了有命令解释执行的功能外,还除了有命令解释执行的功能外,还具备有其他的功能,如:具备有其他的功能,如:系统环境的设置系统环境的设置输入输出的重新定向输入输出的重新定向shellshell程序语言的设计等。程序语言的设计等。1 shell1 shell基本概念基本概念 不同类型的不同类型的shellshell在应用中各有所长,但是它们主要要完成在应用中各有所长,但是它们主要要完成的
2、功能是相似的。最基本的有以下五个重要功能的功能是相似的。最基本的有以下五个重要功能 命令解释命令解释SHELLSHELL脚本脚本建立用户环境建立用户环境IO重定向重定向建立管道建立管道1.1 1.1 UNIXUNIX系统系统的的标准标准流流 流是一个很形象的概念,当程序需要读取数据的时候,就会开启一个通向数据源的流,这个数据源可以是文件,内存,或是网络连接。类似的,当程序需要写入数据的时候,就会开启一个通向目的地的流。这时候你就可以想象数据好像在这其中流动一样 在UNIX系统中,文件的组织方式是按字节进行的,文件之间,设备之间的信息传递是按字节流完成的。因此信息流的概念在UNIX中很重要。1.
3、1.1 1.1.1 命令处理流命令处理流 在操作系统中,如果将命令处理看作是“加工”那么向此“加工”输入的命令信息和由这个“加工”输出的信息可以看作信息流。如果不考虑“信息流”中包含的具体内容,只关心“信息流”和“加工”之间的关系,我们可以将命令处理中的“信息流”描述为:“命令输入信息流”和“命令输出信息流”,或者简称为“命令输入流”“命令输出流”,它们都属于命令处理流。1.1.2 1.1.2 信息信息流流在UNIX系统中,对输入输出信息流作了如下定义 文件描述符文件描述符标准定义标准定义默认映射对象默认映射对象0 0标准输入流标准输入流键盘键盘1 1标准输出流标准输出流显示器显示器2 2标准
4、错误流标准错误流输出错误信息输出错误信息系统启动系统启动ShellShell程序时缺省给定了程序时缺省给定了3 3个标准流,标准输入流个标准流,标准输入流(stdin),(stdin),标标准输出流准输出流stdout,stdout,标准错误流标准错误流stderrstderr。之所以这么区分是因为在早期之所以这么区分是因为在早期的计算机系统如的计算机系统如PDP-11PDP-11的一些限制。那时没有的一些限制。那时没有GUIGUI,将输出分为将输出分为stdout,stderrstdout,stderr可以避免程序的调试信息和正常输出的信息混杂在一可以避免程序的调试信息和正常输出的信息混杂在
5、一起。起。2 2 shellshell基本功能基本功能2.1 Shell2.1 Shell命令解释命令解释2.2 2.2 输入输出流重定向输入输出流重定向2.3 2.3 错误流重定向错误流重定向2.4 2.4 管道线处理管道线处理2.5 2.5 用户工作环境设置用户工作环境设置2.6 Shell2.6 Shell程序设计2.1 SHELL命令解释过程2.2 shell2.2 shell输入输出重定向输入输出重定向 默认状态下,shell将命令的输入流设定为键盘,输出流设定为显示器,错误流也定义为显示器。但是在有些情况下,我们可以改变这些流的设定。改变流的设定常用的符号有,ls-l ls.txt
6、ls.txt ls-l/home/user1 ls-l/home/user1 ls.txtls.txt ls-l/home/user1 ls-l/home/user1 ls.txtls.txt2.2 shell2.2 shell输入输出重定向输入输出重定向重定向符表示将标准输入从键盘重新定义到另外的流。例如:prog infile,即prog命令将从文件infile中读取参数。执行一个shell程序也可以使用这种方式。例如 sh user1.sh 就表示要执行user1.sh这个shell程序。重定向符,也能够混合使用,例如:prog outfile 表示prog命令从infile中获取命令参
7、数,然后将执行结果输出到文件outfile中。2.3 2.3 错误流重定向错误流重定向 在UNIX系统中,错误信息流是指在命令或程序执行中出现错误时系统给出的提示或警告信息,UNIX中将它们作为一个独立的标准输出流进行定义,错误信息流通常定义为显示器。当然,用户也可以根据需要对它进行重定向。不同的shell在这方面有所不同。Cshell中使用的错误流重定向符是:&,例如:例如:cc cc abc.cabc.c&log.txt,&log.txt,即将编译过程中的输出流和错即将编译过程中的输出流和错误流定向为误流定向为log.txtlog.txt文件。文件。在在BshellBshell中则不用,需
8、要如下书写:中则不用,需要如下书写:cc cc abc.cabc.c 2&1 log.txt 2&1 log.txt2.4 2.4 管道线处理管道线处理 管道线可以实现将一个程序或命令的输出作为另外一个程序或命令的输入,管道线作为两个命令之间的分隔符。管道线的符号是“|”。例如有这样一组命令:例如有这样一组命令:$ls l$ls l tempfiletempfile$wcwc l l tempfiletempfile$rmrm tempfiletempfile 管道线处理:管道线处理:$ls-l|wc-l2.4 2.4 管道线处理管道线处理 除此之外,还有“;”、“&”、“&”、“|”可替代管
9、道线“|”作为命令列表的分隔符.其中:“;”:表示多个命令顺序执行 “&”:命令行尾输入,表示将命令的执行过程放到后台处理。“&”:代替原有的符号“|”,表示当左边的命令为“真”值时,执行右边的命令。“|”:代替原有的符号“|”,表示当左边的命令为“假”值时,执行右边的命令。2.4 2.4 管道线处理管道线处理 例如:例如:(a a)pwd pwd;who who;ls lls l(b b)cc cc prgm.cprgm.c&(c c)write write zhangzhang letter|mail letter|mail zhangzhang letter letter(d d)mai
10、l mail zhangzhang letter&tempfile2.5 Shell2.5 Shell程序设计程序设计在在UNIX系系统统中中使使用用shell程程序序设设计计,可可以以完完成成比比较较复复杂杂并并且且自自动动执执行行的的任任务务。UNIX系系统统上上的的shell程程序序在在本本质质上上是是一一种种解解释释执执行行的的脚脚本本语语言言,使使用用的的元元素素是是UNIX系系统统的的命命令令集集,它它与与windows系系统统中中的的bat批处理文件原理相同,但是比批处理文件更强大,也更灵活。批处理文件原理相同,但是比批处理文件更强大,也更灵活。本节内容我们将使用本节内容我们将使
11、用B-shell进行进行shell程序设计。程序设计。1 Shell1 Shell程序的执行方式程序的执行方式 2 Shell2 Shell程序的变量使用程序的变量使用 3 test3 test命令的使用命令的使用 4 4 条件控制语句条件控制语句 5 Shell5 Shell程序调试程序调试2.5.1 Shell2.5.1 Shell程序的执行方式程序的执行方式Shell程程序序有有多多种种执执行行方方式式,比比如如,我我们们建建立立一一个个比比较较简简单单的的shell程序脚本,文件保存命名为程序脚本,文件保存命名为test.sh,内容如下:内容如下:datewhops执行这个执行这个te
12、st.sh可以有多种方式。可以有多种方式。1)将)将test.sh作为作为shell命令的执行参数来完成该命令的执行参数来完成该shell的执行:的执行:$shtest.sh2)利用输入输出的重定向方式利用输入输出的重定向方式$shtest.sh3)直直接接执执行行该该shell程程序序,但但首首先先要要保保证证该该shell程程序序具具备备可可执执行行的的权权限限,可可以用以用chmod来修改:来修改:chmoda+xtest.sh,之后在命令行执行它之后在命令行执行它$test.sh2.5.2 2.5.2 变量定义变量定义Shell程程序序被被设设计计为为可可以以支支持持变变量量的的使使用
13、用,定定义义变变量量,应应用用变变量量的的值值等等等等。shell的的变变量量只只有有字字符符串串型型,在在shell程程序序中中出出现现的的数数值值计计算都是基于字符串类型来完成的。算都是基于字符串类型来完成的。1)shell中的变量和变量赋值中的变量和变量赋值shell变变量量定定义义由由字字母母开开始始,可可以以包包含含数数字字,字字母母和和下下划划线线,例例如如var1,username,pass_word等等。变变量量的的赋赋值值可可以以在在程程序序运运行行中中进进行行,也也可可以以在在变变量量定定义义时时进进行行,例例如如UNIX=“SYSTEMV”,如如果果字字符符串中间没有空格
14、和制表符,则可以不要双引号。串中间没有空格和制表符,则可以不要双引号。值得注意的是值得注意的是B-shell中等号的两边是不允许有空格的。中等号的两边是不允许有空格的。2)变量的定义域)变量的定义域shell的的变变量量也也有有局局部部变变量量和和全全局局变变量量的的区区别别。通通常常在在一一个个shell程程序序中中,通通过过形形如如var1=abc方方式式定定义义的的都都是是局局部部变变量量,要要定定义义全全局局变变量量,需需要要在在局局部部变变量定义之后使用量定义之后使用export命令来将这个变量声明为全局的命令来将这个变量声明为全局的:export$var1以下面的例子以下面的例子v
15、ar.sh,我们来说明全局变量和局部变量的区别和使用我们来说明全局变量和局部变量的区别和使用$var1=csu$echo$var1$sh$echo$var1$exit$echo$var1$export$var1$sh$echo$var1第一个第一个echo显示的是显示的是csu,这是通常的用法这是通常的用法第三行,调用第三行,调用sh进入一个新的进入一个新的shell进程进程第第四四行行的的echo显显示示为为空空,因因为为var在在这这个个进程中并没有进行定义进程中并没有进行定义第第五五行行,调调用用exit退退出出新新建建的的shell回回到到原来原来shell的进程中的进程中第六行的第六
16、行的echo又能够正常显示了又能够正常显示了第第七七行行调调用用export,将将var1定定义义为为全全局局的的,这这样样在在新新建建的的shell中中,var1也能访问,也能访问,最后一行显示出最后一行显示出csu变量取值变量取值1)shell中变量的访问和参数替换中变量的访问和参数替换在在shell程程序序中中,或或者者是是shell命命令令中中,使使用用操操作作符符$来来对对shell变变量量进进行行访问。例如,要显示某个变量时,可以输入:访问。例如,要显示某个变量时,可以输入:$echo$UNIX(系统将会显示系统将会显示SYSTEMV)在在某某些些场场合合下下,为为了了明明确确表表
17、示示对对shell变变量量的的引引用用,可可以以用用花花括括弧弧或者双引号将变量括起来,例如:或者双引号将变量括起来,例如:$echo$UNIX$echo$UNIXAaaaaa$echo“$UNIX”isverygoodSYSTEMVSYSTEMVAaaaaaSYSTEMVisverygood(a)单单引引号号:使使用用单单引引号号时时,shell将将一一对对单单引引号号之之间间的的内内容容看看成成是是纯纯粹粹的字符串信息,一对单引号之间可以包含更多的单引号。的字符串信息,一对单引号之间可以包含更多的单引号。you”kkk”echothisisjustatest,can$youtellmeth
18、etime?将将会会显显示示thisisjustatest,can$youtellmethetime?,它它不不会会将将$you替替换换成成“kkk“,同时同时test也是作为字符串内容来处理的。也是作为字符串内容来处理的。(b)双引号双引号“:它将双引号之间的特殊字符作为它将双引号之间的特殊字符作为shell中的含义来解释。中的含义来解释。$file=unixshell$echo“thecontentofdateisin$file”这这个个例例子子将将会会显显示示thecontentofwedAug1616:20:12isinunixshell,这这个个例例子子中中,date被被解解释释成成
19、了了当当前前时时间间的的返返回回值值,$file被被解解释释成成了了unixshell字字符符串。串。(c)反引号反引号 用它来赋值时,表示变量中保存的是执行对应命令的结果。用它来赋值时,表示变量中保存的是执行对应命令的结果。name=whoamiecho$name这这个个时时候候显显示示的的不不是是字字符符串串whoami,而而是是执执行行字字符符串串whoami的的返返回回结结果果,当然,要先保证字符串是一个合法的命令。当然,要先保证字符串是一个合法的命令。2)shell中引号的说明中引号的说明:单引号单引号、双引号双引号“”、反引号反引号预定义变量或用户环境变量预定义变量或用户环境变量每
20、每种种shell都都提提供供一一种种工工作作模模式式,而而工工作作模模式式的的确确定定是是由由一一组组工工作作环环境变量来决定的境变量来决定的。用户预定义变量用户预定义变量系统变量系统变量通过访问上述变量通过访问上述变量SHELL读取需要的读取需要的值,然后解释执行值,然后解释执行用户请求用户请求结束结束用户工作环境设置用户工作环境设置2)Bshell的环境变量的环境变量 b b shellshell是是使使用用最最广广泛泛的的UNIXUNIX系系统统,我我们们可可以以了了解解一一下下bshellbshell的环境变量的设置。的环境变量的设置。在在用用户户目目录录下下有有.bash_profi
21、le,.bash_profile,.bashrcbashrc,.bash_logout.bash_logout三三个和环境变量相关的文件,一个典型的个和环境变量相关的文件,一个典型的.bash_profile.bash_profile的内容:的内容:1 1)工作环境变量)工作环境变量在在UNIXUNIX系系统统中中,通通常常会会有有10103030个个永永久久性性的的变变量量与与用用户户的的登登录录标标识识联联系系在在一一起起。这这些些变变量量是是用用户户在在登登录录时时进进行行赋赋值值的的,由由shell统统一一维维护,在护,在用户注销时自动撤销用户注销时自动撤销。.bash_profile
22、bash_profile文件文件#.bash_profile#.bash_profile#Get the aliases and functions#Get the aliases and functionsif -f/.if -f/.bshrcbshrc then then././.bshrcbshrcfifi#User specific environment and startup programs#User specific environment and startup programsPATH=$PATH:$HOME/binPATH=$PATH:$HOME/binecho welc
23、ome echo welcome MrMr test testexport PATHexport PATH.bshrcbshrc内容如下:内容如下:#.#.bshrcbshrc#User specific aliases and functions#User specific aliases and functions#Source global definitions#Source global definitionsif -f/etc/if -f/etc/bashrcbashrc;then;then./etc/./etc/bashrcbashrcfifiINPUTRC=/etc/input
24、rcUSER=testMAIL=/var/spool/mail/testHOSTNAME=linux9OLDPWD=/home/testHOME=/home/testSUPPORTED=zh_CN.GB18030:zh_CN:zh:en_US.UTF-8:en_US:enTERM=ansiPATH=/usr/local/bin:/bin:/usr/bin:/usr/X11R6/binLANG=en_US.UTF-8SHELL=/bin/bshPWD=/home/test/t一个一个SHELL环境实例环境实例Shell中命令的位置变量中命令的位置变量 在在shell中中可可以以使使用用位位置置变
25、变量量进进行行编编程程设设计计,事事实实上上它它们们相相当当于于C程程序序中中的的argc和和argv参参数数的的功功能能,用用于于对对命命令令行行中中各各个个参参数数位位置置的描述。的描述。#listargs.shlistargs.sh argv1 argv2 argv3 argv4$0$1$2$3$4Bshell变量变量CShell变量变量变量的作用变量的作用$#$#argv位置参数的个数位置参数的个数$*表示参数列表表示参数列表$?$status前一个命令返回的状态值前一个命令返回的状态值$当前当前shell进程的进程的pid值值$!最近访问的后台进程最近访问的后台进程pid值值几个常用
26、的特殊变量:几个常用的特殊变量:Shell中的变量替换中的变量替换一一个个变变量量在在尚尚未未赋赋值值的的时时候候,就就被被程程序序进进行行了了输输出出处处理理,这这样样输输出出的的变变量量将将会会得得到到一一个个空空字字符符串串的的结结果果。为为了了避避免免这这种种情情况况的的发发生生,shell中中引引入入了了变变量量替替换换的的概概念念,在在变变量量没没有有赋赋值值的的时时候可以用一个预先定义的字符串来替换。候可以用一个预先定义的字符串来替换。替换的形式有三种,列举如下:替换的形式有三种,列举如下:$var:-word表表示示如如果果var已已经经被被赋赋值值,则则取取它它的的值值,否否
27、则则取取word的值,但的值,但var不改变。不改变。$var:=word表表示示如如果果var已已经经被被赋赋值值,则则取取它它的的值值,否否则则取取word的值,同时将的值,同时将word赋给赋给var。$var:+word表表示示如如果果var已已经经被被赋赋值值,则则取取它它的的值值,否否则则var变量置为空。变量置为空。2.5.3 test2.5.3 test命令的使用命令的使用在在shell中中经经常常要要对对某某些些变变量量的的值值进进行行判判断断来来决决定定分分支支程程序序的的走走向向,如如同同C中中使使用用if(a=0)一一样样。Shell中中通通过过test命命令令来来完完
28、成成这这个功能。个功能。test的格式表示为:的格式表示为:testexpre或者或者testexpretest命命令令的的执执行行结结果果是是,如如果果表表达达式式为为真真,则则返返回回真真值值0,否否则则返回非返回非0的假值。的假值。test命令可以对文件,字符串内容,整数命令可以对文件,字符串内容,整数n等变量进行测试。等变量进行测试。2.5.3 test2.5.3 test命令的使用命令的使用1)对文件特性的测试)对文件特性的测试语法:语法:test-dfrwxsfile-dfile:文件文件file存在并且为目录文件存在并且为目录文件-ffile:文件文件file存在并且为普通文件存
29、在并且为普通文件-rfile:文件文件file存在并且为可读文件存在并且为可读文件-wfile:文件文件file存在并且为可写文件存在并且为可写文件-xfile:文件文件file存在并且为可执行文件存在并且为可执行文件-sfile:文件文件file存在并且文件长度为非存在并且文件长度为非0例如:例如:$testd/home/user&echo“directoryexists”判断判断/home/user是否为一个目录文件,如果为真(是否为一个目录文件,如果为真(&)则执行)则执行echo进行显示进行显示$test x/home/user/sh1.sh|echo “sh1.sh dos not
30、exist or is notrunnable!”判断文件判断文件/home/user/sh1.sh是否可执行,如果为假(是否可执行,如果为假(|)则执行)则执行echo进行显示进行显示2.5.3 test2.5.3 test命令的使用命令的使用2)对字符串内容的测试)对字符串内容的测试语法语法:tests(字符串字符串s为有值时返回真,为空则返回假)为有值时返回真,为空则返回假)test-zs与与tests相反,为空时返回真,不空则返回假相反,为空时返回真,不空则返回假tests1=s2当字符串当字符串s1和和s2相等时返回真,不相当则返回假相等时返回真,不相当则返回假tests1!=s2与
31、与tests1=s2相反。相反。例例 x1=“005”x2=5 ,进行字符串测试进行字符串测试#test“$x1”=“$x2”#echo$?系系统统将将显显示示0,0,结结果果为为假假值值,表示表示x1x1和和x2x2不相等不相等2.5.3 test2.5.3 test命令的使用命令的使用3)对于整数)对于整数n的的测试的的测试格式格式testn1-eq/ne/it/ie/gt/gen2它们分别表示它们分别表示n1和和n2之间之间相等相等/不相等不相等/n1n2 /n1n2 /n1=n2时时返回真值。返回真值。例例 x1=“005”x2=5 ,进行数字式测试进行数字式测试#test“$x1”-
32、eq“$x2”#echo$?系系统统将将显显示示1,1,结结果果为为真真值值,表示数字表示数字x1x1和数字和数字x2x2相等相等2.5.4 2.5.4 条件控制语句条件控制语句在在结结构构化化的的程程序序设设计计中中,三三种种基基本本的的语语句句结结构构是是顺顺序序结结构构,分分支支结结构构,循循环结构。其中的分支结构,在环结构。其中的分支结构,在shell中常用中常用if和和case语句来实现。语句来实现。1)if语句语句if语语句句的的分分支支可可以以有有无无分分支支条条件件语语句句,二二分分支支条条件件语语句句,多多分分支支条条件件语语句句。无分支条件语句格式无分支条件语句格式如下:如
33、下:ifconditionthen命令命令1命令命令2命令命令nfi当当条条件件condition为为真真时时,执执行行then后后面面的的所所有有命命令令,condition为为假假则则执执行行fi后面的语句。后面的语句。2.5.4 2.5.4 条件控制语句条件控制语句二分支条件语句:二分支条件语句:格式为格式为ifthenelse结构结构ifconditionthen命令命令1命令命令2else.命令命令nfi多分支结构:多分支结构:分支大于分支大于2的条件语句。的条件语句。ifcondition1thenelifcontition2thenelifcondition3thenelseco
34、mmand_nfi2.5.4 2.5.4 条件控制语句条件控制语句2)case语句语句可以实现多选一的控制结构可以实现多选一的控制结构case语句的语法为:语句的语法为:casewordin模式模式1)命令命令;模式模式2)命令命令;模式模式3)命令命令;esac注注意意,在在case中中,每每个个命命名名命命令令的的结结束束用用;表表示示模模式式匹匹配配已已经经完完成成,不不再匹配其他的模式,相当于再匹配其他的模式,相当于C中的中的break。2.5.5 2.5.5 循环语句循环语句shell中的循环有中的循环有for和和while两种循环方式。两种循环方式。1)for的语法格式为的语法格式
35、为:forvarinlist-of-varsdocommand1command2commandndonefor的的语语法法说说明明为为:shell程程序序扫扫描描变变量量列列表表list-of-vars,将将其其中中的的每每一一个个字字依依次次存存放放在在var中中,并并执执行行do和和done之之间间的的语语句句。如如果果list-of-vars中中有有n个个字,则这个字,则这个for循环将执行循环将执行n次。次。2.5.5 2.5.5 循环语句循环语句2)while循环循环whiledodone结构结构while循环中,只要循环条件为真就一直循环下去。循环中,只要循环条件为真就一直循环下去
36、。格式:格式:whileconditiondocommand1command2.done2.5.5 2.5.5 循环语句循环语句3)until循环循环untildodoneuntil循循环环和和while循循环环类类似似,所所不不同同的的是是until循循环环只只要要循循环环条条件件为为假假,就就一一直直执行循环体。执行循环体。格式:格式:untilconditiondocommand1commandndone如果第一次执行时,循环条件如果第一次执行时,循环条件condition就为真,那循环体将得不到执行。就为真,那循环体将得不到执行。同同时时还还要要注注意意,必必须须在在程程序序中中设设置
37、置条条件件condition为为真真的的因因素素,否否则则循循环环将将一一直进行下去,从而进入了死循环。直进行下去,从而进入了死循环。2.5.6 Shell2.5.6 Shell程序调试程序调试shell程程序序是是一一种种解解释释性性语语言言,它它的的执执行行是是逐逐行行进进行行的的,程程序序中中是是否否有有语语法法错错误误,不不执执行行到到那那一一行行系系统统是是无无法法知知道道的的。C,pascal等等高高级级语语言言是是有有编编译译过过程程的的,程程序序中中的的语语法法错错误误在在编编译译阶阶段段就就能能检检测测出出来来,因因此此比比shell更更容易调试容易调试shell程序通常有三
38、种调试方法:程序通常有三种调试方法:1)交互式调试)交互式调试shell程程序序中中使使用用的的命命令令都都能能在在命命令令行行中中运运行行,所所以以对对于于一一些些不不很很熟熟悉悉的的命命令令和和语语法法可可以以先先用用命命令令进进行行验验证证,然然后后再再编编写写到到shell程程序序中中,这这种种调调试试方法称为交互式调试,也是最简单的一种调试方法。方法称为交互式调试,也是最简单的一种调试方法。2.5.6 Shell2.5.6 Shell程序调试程序调试2)在编辑过程中不断调试执行所编辑的)在编辑过程中不断调试执行所编辑的shell程序程序在在UNIX系系统统中中可可以以打打开开多多个个
39、工工作作窗窗口口。我我们们可可以以在在一一个个窗窗口口中中用用vi等等编编辑辑器器进进行行编编辑辑,然然后后在在另另一一个个连连接接窗窗口口中中执执行行该该shell程程序序,这这样样可可以以随随时观察到已经编写的部分是否正确。最终完成这个时观察到已经编写的部分是否正确。最终完成这个shell程序的编写。程序的编写。3)用)用shell程序提供的跟踪功能进行调试程序提供的跟踪功能进行调试shell程序可以使用程序可以使用-v-x选项对选项对shell程序进行跟踪程序进行跟踪-v:当当读读入入shell输输入入行行时时把把它它们们显显示示出出来来,完完成成详详细细跟跟踪踪。Shell程程序序在在完完成成这这段段程程序序执执行行时时首首先先逐逐行行读读入入执执行行的的命命令令,并并在在标标准准输输出出上上显显示示该该命命令令要要执执行行的的实实际际内内容容,然然后后执执行行该该命命令令。如如果果没没有有语语法法错错误误,执执行行将将一直进行下去直到完成一直进行下去直到完成shell的执行。的执行。-x:执行命令前先把命令和它们的参数显示出来执行命令前先把命令和它们的参数显示出来