预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

亲,该文档总共68页,到这已经超出免费预览范围,如果喜欢就直接下载吧~

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

PAGE-68- 第十九章BashShell编程 [课前思考] 为什么要使用Shell脚本?Shell脚本文件的结构如何?如何使脚本文件运行起来? 什么是位置参量?Linux系统中如何表述?位置参量与set命令有何关系? 如何在脚本中编写条件判断转移语句?如何编写循环语句? 你能对系统中的文件进行检测吗?能编写一个菜单式的选择脚本吗? 介绍 当命令不是从命令行开始执行而是从一个文件开始,这个文件就叫做Shell脚本,这种模式叫做非交互模式。当bash开始非交互模式的时候,它就开始寻找环境变量,BASH_ENV(ENV)和启动文件(通常是.bashrc)并给它们赋值。在读取环境变量文件后,bash开始执行脚本。 建立Shell脚本的步骤 Shell脚本通常在编辑器中编写,由命令和注释组成。注释通常以#开头,用于说明程序将要做什么事情。 第一行 在脚本左上角的第一行用来说明程序执行脚本中的哪一行。这行通常被称为shbang行,写作: #!/bin/bash #! #!被称为魔术数字(magicnumber),用于供内核确认哪个程序将翻译并执行这个脚本。该行必须在脚本的第一行。。 注释 注释是以#开头的,可以是单独的一行也可以在脚本命令以后和脚本命令共占一行。它们用来说明脚本做什么,在没有说明的情况下,脚本有时是很难理解的。虽然注释很重要,但是在多数情况下它们是无用的。注释不仅仅是为了给别人看也是为了提醒自己,也许两天后你就无法清楚地记得你现在想做什么了。 脚本的组成 bash脚本由Linux命令、bash命令、程序结构和注释组成。 使脚本可执行 当你创建一个文件后,它并没有执行的权限。你需要权限去执行它,通过chmod可以将其权限改变为可执行的。 [实例19.1]通过chmod改变脚本文件myscript的权限,使其变为可执行。 [说明] 执行chmod命令前,可见myscript是不可执行的程序。 用户、组和其他人都可以用chmod命令改变文件权限。 ls命令显示这个文件对于所有的用户都是可以执行的,末尾的星号表示这是个可执行程序。 脚本会话 以下例子,用户在编辑器中创建一个文件。文件保存后,并没有执行权限,使用chmod命令,使其执行权限就被打开,接着执行脚本。如果程序出现错误,则Shell就会立刻响应。 [实例19.2]对greetings脚本进行修改权限,然后执行此脚本。 [说明] 脚本的第一行#!/bin/bash向kernel确认脚本的翻译执行程序是bash 注释不可执行,它们单独占据一行或者追加在命令后面。 在变量替换以后,echo命令在屏幕上显示引号内的文字。 在命令替换以后,echo命令在屏幕上显示引号内的文字。 执行ls命令,注释被Shell忽略。 echo命令显示双引号内的字符串。双引号中的变量和命令被替换,但是在这里引号不是必要的。 读取用户输入 变量 在上一章节中我们讨论了变量的声明和复位。变量可以是本地变量供当前的Shell使用,也可以是环境变量。除非Shell脚本还需要启动其他脚本,否则变量都用作本地变量在当前的脚本中使用。 要从变量中提取值,就在变量前加美元符号。可以把变量用双引号引用,美元符号会被Shell解释为变量值提取。在单引号中,变量值是无法提取的。 [实例19.3] read命令 read命令是用于从终端或者文件中读取输入的内建命令,见表19-1。read命令读取整行输入,每行末尾的换行符被翻译为null(空字符串)。如果没有指定名称,读取的行就被赋值给一个特定的变量REPLY。你也可以使用read命令,使得程序停下来等待用户输入回车。read命令的-r选项忽略反斜杠——换行符,斜杠作为行的一部分;read命令共有四个选项,-a、-e、-p、以及-r。 表19-1 read命令 格式含义readanswer从标准输入读取输入并赋值给变量answerreadfirstlast从标准输入读取输入到第一个空格或者回车,将输入的第一个单词放入变量first中,并将该行其他的输入放在变量last中read从标准输入读取一行赋值给内建变量REPLYread-aarrayname把单词清单读入一个叫作arrayname的数组里read-e在命令行状态下打开命令行编辑。如果编辑器是vi,那么在提示符下就可以直接使用vi命令了。read-pprompt打印提示,等待输入,并将输入储存在REPLY中read-rline允许输入包含反斜杠。[实例19.4]read命令的应用范例。 [说明] read命令从用户那里得到一行输入,并把它赋值给变量answer。 read命令从用户那里得到一行输入,并把第一个单词赋值给变量first,第二个单词赋值给middle,剩余部分赋值给变最la