第5讲she编程 51she概述 52she变量 5.3she的特殊字符 54she的控制结构 55she应用实例 56小结 习题
第5讲 shell编程 5.1 shell概述 5.2 shell变量 5.3 shell的特殊字符 5.4 shell的控制结构 5.5 shell应用实例 5.6 小结 习题
she是一种命令语言,同时又是一种程序 设计语言。 sheI的语言处理能力,使得用户能够方便 地定义各种变量、参数,并使用各种控制语 句编写复杂的命令程序完成多种工作 本课介绍 shell shell程序设计语言、shll 的运行环境及shel程序的实例
shell是一种命令语言,同时又是一种程序 设计语言。 shell的语言处理能力,使得用户能够方便 地定义各种变量、参数,并使用各种控制语 句编写复杂的命令程序完成多种工作。 本课介绍shell、shell程序设计语言、shell 的运行环境及shell程序的实例
5.1she述 5.1.1什么是shel she是一种命令解释程序(命令解释器),she解 释用户输入的命令行,提交系统内核处理,并将结果 又有区别。一旦用户注册到系统后,she〕被系统装 入内存,并一直运行到用户退出系统之止;而一般命 令仅当被调用时,才由系统装入内存执行。 she身也是一种可编程的程序设计语言。用 she写的程序(she脚本)相当于dos/ windows下的批处 理文件,它可以简单到只有一条命令,也可以复杂到 包括大量循环、条件语句、数学运算、控制结构,也 可以是介于两者之间的程序
5.1 shell概述 5.1.1 什么是shell shell是一种命令解释程序(命令解释器),shell解 释用户输入的命令行,提交系统内核处理,并将结果 返回给用户。与Linux命令一样都是实用程序,但两者 又有区别。一旦用户注册到系统后,shell就被系统装 入内存,并一直运行到用户退出系统之止;而一般命 令仅当被调用时,才由系统装入内存执行。 shell本身也是一种可编程的程序设计语言。用 shell写的程序(shell脚本)相当于dos/windows下的批处 理文件,它可以简单到只有一条命令,也可以复杂到 包括大量循环、条件语句、数学运算、控制结构,也 可以是介于两者之间的程序
512shel程序语言的特点 she允许通过编程来完成复杂的功能处理,但 其作为语言与高级语言相比较具有不同的特点: (1)she是解释性的,多数高级语言是编译性的; (2)she语言与高级语言处理的对象不同; (3)she与系统有密切的关系; (4)she易编写、调试、灵活性较强,但速度低; (5)shel作为命令级语言,命令组合功能很强
5.1.2 shell程序语言的特点 shell允许通过编程来完成复杂的功能处理,但 其作为语言与高级语言相比较具有不同的特点: (1) shell是解释性的,多数高级语言是编译性的; (2) shell语言与高级语言处理的对象不同; (3) shell与系统有密切的关系; (4) shell易编写、调试、灵活性较强,但速度低; (5) shell作为命令级语言,命令组合功能很强
513bash的特点 she两种主要语法类型: Bourne shel和C she,彼此不兼容。 Bourne shel家族: sh ksh bash psh zsh; C shell家族 csh tesh。 其中bash和h在不同程度上支持csh的语法。 这里,我们再着重介绍一下bash的特点: (1)自动补全功能 假设要输入的命令很长,或者命令后面要给的 文件名很长。这个时候只要按一个Tab键,bash就会 在可能的命令或文件名里面找寻匹配的命令,找到 的话就会自动帮你补齐
5.1.3 bash的特点 shell有两种主要语法类型: Bourne shell和C shell,彼此不兼容。Bourne shell家族:sh ksh bash psh zsh;C shell家族:csh tcsh。 其中bash和 zsh在不同程度上支持 csh 的语法。 这里,我们再着重介绍一下bash的特点: (1) 自动补全功能 假设要输入的命令很长,或者命令后面要给的 文件名很长。这个时候只要按一个Tab键,bash就会 在可能的命令或文件名里面找寻匹配的命令,找到 的话就会自动帮你补齐
(2)命令行编辑程序 bash的命令行编辑是在提示符下,可对未执行 的命令字符任意地修改。 (3)命令历史 command history) 所谓的命令历史就是把曾经输入过的命令记录 起来,方便日后的查询与使用。只要按向上键就可 以调出前一个命令,再按一次向上键就可以调出更 前一个命令,依此类推,用向下键可以回到下个命 令,所以用上、下键就可以选择以前输入过的命令
(2) 命令行编辑程序 bash的命令行编辑是在提示符下,可对未执行 的命令字符任意地修改。 (3) 命令历史(command history) 所谓的命令历史就是把曾经输入过的命令记录 起来,方便日后的查询与使用。只要按向上键就可 以调出前一个命令,再按一次向上键就可以调出更 前一个命令,依此类推,用向下键可以回到下个命 令,所以用上、下键就可以选择以前输入过的命令
51.4Shel程序的创建与执行 用任一文本编辑器创建she文件(x) (例如 gedit xxx) 将shel文件改为可执行文件 (例如: Schmo u+xxxx) 执行shel文件 (例如:S,/xxx)
5.1.4 Shell程序的创建与执行 • 用任一文本编辑器创建shell文件 (xxx) (例如: gedit xxx) • 将shell文件改为可执行文件 (例如:$chmod u+x xxx) • 执行shell文件 (例如:$./ xxx)
51.5Shel程序示例 以test运行“附件”中“文本编辑器”程序gedt 在新建空白文档中输入如下内容 date pwd 保存文件到/home/test/xx中 修改文件权限,运行“系统工具”中“终端”,输 入 chmod u+x xxX 输入./xxX
5.1.5 Shell程序示例 • 以test运行“附件”中“文本编辑器”程序 gedit • 在新建空白文档中输入如下内容: date pwd cd .. • 保存文件到 / home/test /xxx 中 • 修改文件权限,运行“系统工具”中“终端”,输 入: chmod u+x xxx • 输入 ./xxx
52shl变量 521she变量描述 she实际上是基于字符串的程序设计语言,但也有变 量。shel变量能够而且只能存储正文字符串,即它 只有一种类型的变量即串变量。但从赋值的形式上 看,则可以分成四种类型的变量或变量形式。变量 的名字必须以字母或下划线开头,可以包括字母、 数字和下划线。 522用户自定义变量 用户自定义变量语法格式:mame= string,赋值号“=” 两边不允许有空白符。 例:
5.2 shell变量 5.2.1 shell变量描述 shell实际上是基于字符串的程序设计语言,但也有变 量。shell变量能够而且只能存储正文字符串,即它 只有一种类型的变量即串变量。但从赋值的形式上 看,则可以分成四种类型的变量或变量形式。变量 的名字必须以字母或下划线开头,可以包括字母、 数字和下划线。 5.2.2 用户自定义变量 用户自定义变量语法格式:name=string,赋值号“=” 两边不允许有空白符。 例:
nodehost=beijing. UUCP path=/bin: /usr/bin: /etc/bin count=10 允许多个赋值操作,按从右到左的顺序进行。 例: SA=BB=abc C="OK" S echO SA SB SC abc abc oK 当引用一个未设置的变量时,其隐含值为空。 例 S echo "S mail is path of mailbox is path of mailbox
nodehost=beijing.UUCP path=/bin:/usr/bin:/etc/bin count=10 允许多个赋值操作,按从右到左的顺序进行。 例: $A=$B B=abc C=″OK″ $ echo $A $B $C abc abc OK 当引用一个未设置的变量时,其隐含值为空。 例: $ echo ″$mail is path of mailbox″ is path of mailbox