1 / 12
文档名称:

《linux与unix+shell编程指南》020.doc

格式:doc   大小:927KB   页数:12页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

《linux与unix+shell编程指南》020.doc

上传人:iris028 2019/9/8 文件大小:927 KB

下载得到文件列表

《linux与unix+shell编程指南》020.doc

文档介绍

文档介绍:执行脚本,输入以下参数,结果为:任何UNIX或LINUX命令均接受一般格式:命令选项文件下载第20章 向脚本传递参数前面已经讲到如何使用特定变量$1..$9向脚本传递参数。$#用于统计传递参数的个数。可以创建一个usage语句,需要时可通知用户怎样以适当的调用参数调用脚本或函数。本章内容有:•shift。•getopts。•shift和getopts例子。简单地说,下述脚本框架控制参数开始与停止。脚本需要两个参数,如果没有输入两个参数,那么产生一个usage语句。注意这里使用case语句处理输入脚本的不同参数。第20章向脚本传递参数 225下载选项部分最多可包含12个不同的值。上述脚本中,如果必须控制不同的命令选项,就要加入大量脚本。这里只控制两个选项:开始和停止。幸运的是shell提供shift命令以帮助偏移选项,使用shift可以去除只使用$1到$9传递参数的限制。,有时需要将每一个参数偏移以处理选项,这就是shift命令的功能。它每次将参数位置向左偏移一位,下面用一段简单脚本详述其功能。脚本使用while循环反馈所有传递到脚本的参数。你可能想像,上述脚本一直执行,直到命令行中不再有更多的参数输入。错了,因为没有办法偏移到脚本中下一个参数,将只会反馈出第一个参数。执行结果如下:。改动后脚本如下:现在再执行,结果将会不同:,如果需要知道命令行中输入的最后一个参数(通常是一个文件名),可以有两种选择:使用命令evalecho\$$#;使用shift命令:shift'expr$#-2'。226 。下面构造一个转换脚本,使用tr将文件名转换为大写或小写。脚本选项为:-l用于小写转换。-u用于大写转换。使用shift命令将脚本放在一起以控制-l和-u选项。脚本的第一版本如下:首先检查脚本是否有参数,如果没有,打印usage语句,如果有需要处理的参数,使用case语句捕获每一个传送过来的选项。当处理完此选项后,使用shift命令搜集命令行中下一选项,如果未发现匹配选项,打印usage语句。当向脚本传递两个无效参数时,输出如下:下一步就是要用case语句处理选项后传递过来的文件名。为此需改动case语句。case语句中捕获任意模式*应该为-*以允许传递无效选项,例如-p或-q。第20章向脚本传递参数 227下载*模式也匹配传递过来的所有文件名,以便用for循环处理每一个文件,这里也将使用-f选项检测文件是否存在。改动后的case语句如下:还需要指定与选项(-l,-u)相关的变量设置。这些变量是:TRCASE保存转换类型(大写或小写)。EXT所有文件转换后,,,不保存初始文件状态。OPT 如果给出此选项,设其为yes,否则为no。如果没有给出此选项,捕获此信息并反馈出来。其他部分脚本用于实际转换处理,这里即tr命令。tr命令放在case语句for循环中读取文件名进行处理的脚本末尾部分。以下为完整脚本:228 第四部分基础shell编程下载只键入文件名,希望脚本提示更多帮助信息:输入两个有效文件及第三个无效文件:使用上述脚本可以将许多文件转换为同样的格式。编写一段脚本,使其控制不同的命行选项,这种方式编程量很大,是一件令人头疼的事。第20章向脚本传递参数 229下载执行上述脚本,给出不同选项,得结果如下:转换一个不存在的文件:传递不正确选项:令假定要写一段脚本,要求控制以下各种不同的命令行选项:命令-l-c23-文v件1文件2shift命令显得力不从心,这就需要用到getopts命令。,使控制多个命令行参数更加容易。getopts用于形成命令行处理标准形式。原则上讲,脚本应具有确认带有多个选项的命令文件标准格式的能力。。以下getopts脚本接受下列选项或参数。•a设置变量ALL为true。•h设置变量HELP为true。230 第四部分基础shell编程下载•f设置变量FILE为true。•v设置变量VERBOSE为true。对于所有变量设置,一般总假定其初始状态为false:getopts一般格式为:getopts option_stringvariable在上述例子中使用脚本:whilegetoptsahfgvOPTION可以看出while循环用于读取命令行,option_string为指定的5个选项(-a,-h