Shell编程实验
一、实验目的
了解 Shell 的作用和主要分类。
了解 Bash的一般语法规则。
练习编写简单的shell程序。
二、实验内容
1.Shell变量的定义及其使用。
2.位置参数和环境变量。
3.Shell中的特殊字符。
4.条件判断结构与循环结构
5.函数的定义和使用
三、预备知识
shell代码
1、LINUX环境下常用命令和VI编辑器的操作。
2、了解Shell作用和主要分类等基础知识。
四、实验设备及工具
软件:PC机操作系统REDHAT ELAS4环境
五、实验原理及说明
Shell是Linux系统中一个重要的层次,它是用户与系统交互作用的界面。在介绍Linux命令时,Shell都作为命令解释程序出现:它接收用户打入的命令,进行分析,创建子进程实现命令所规定的功能,等子进程终止工作后,发出提示符。这是Shell最常见的使用方式。
Shell 除了作为命令解释程序以外,还是一种高级程序设计语言,它有变量,关键字,有各种控制语句,如if, case, while, for 等语句,有自己的语法结构。利用Shell程序设计语言可以编写出功能很强、但代码简单的程序,特别是它把相关的Linux命令有机地组合在一起,可大大提高编程的效率,充分利用Linux系统的开放性能,设计出适合自己要求的命令。
六、实验步骤
1.语法练习
(1)Shell变量
Shell有两种变量:环境变量和临时变量。在Shell脚本中临时变量又分为两类:用户定义的变量和位置参数。
用户定义的变量
用户定义的变量是最普遍的Shell变量,变量名是以字母或下化线打头的字母、数字和下线符序列,并且大小写字母意义不同。变量名的长度不受限制。定义变量并赋值的一般形式是:变量名=字符串例如,
MYFILE=/usr/meng/ff/m1.c
a.定义并显示变量的值
在程序中使用变量的值时,要在变量名前面加上一个符号“$”。这个符号告诉Shell,要读取该变量的值。
作为交互式输入手段,可以利用read命令由标准输入(即键盘)上读取数据,然后赋给指定的变量。其一般格式是:read 变量1 [变量2...]
练习1.2:
利用read命令可交互式的为变量两赋值。输入数据时,数据间以空格或制表符作为分隔符。注意以下情况:
*若变量个数与给定数据个数相同,则依次对应赋值,如上面例子所示。
*若变量数少于数据个数,则从左至右依次给变量赋值,而最后一个变量取得所有余下数据的值。
*若变量个数多余给定数据个数,则从左到右依次给变量赋值,后面的变量没有输入数据与之对应时,其值就为空串。
位置参数
执行Shell脚本时可以使用参数。由出现命令行上的位置确定的参数称做位置参数。在sh中总共有十个位置参数,其对应的名称依次是$0,$1,$2,...$9。其中$0始终表示命令名或Shell脚本名,对于一个命令行,必然有命令名,也就必定有$0;而其它位置参数依据实际需求,可有可无。
练习1.3 位置参数的作用。
a.在你的计算机上建立以下三个文件(设建立在目录/usr/username之下,其中username表示你的主目录名):
文件ex3:
name)。如果没有包含在其中,则利用以下语句改变PATH的值:
$ PATH= $ PATH:/usr/usr/username
练习1.4 利用位置参数给定变量赋值。
(2)Shell中的特殊字符
通配符
通常的通配符有三种:
* 星号,它匹配任意字符的0次或多次出现。但注意,文件名前面的圆点(.)和路径名中的斜线(/)必须显示匹配。
问号,它匹配任意一个字符。
[] 一对方括号,其中有一个字符组。其作用是匹配该字符组所限定的任意一个字符。
应该注意:字符* 和?在一对方括号外面是通配符,若出现在其内部,它们就失去通配符的能力了。
!叹号,若它紧跟在一对方括号的左方括号[之后,则表示不在一对方括号中所列出的字符。
引号
在Shell中引号分为三种:单引号、双引号、和倒引号。
◆双引号
由双引号括起来的字符,除$、倒引号和反斜线(\)仍保留其功能外,其余字符通常作为普通字符对待。
练习1.5
◆单引号
由单引号括起来的字符都作为普通字符出现。
◆倒引号
练习1.6:
又:
转义字符,若想在字符串中使用反斜线本身,则必须采用(\\)的形式,其中第一个反斜线作为转义字符,而把第二个反斜线变为普通字符。
(3)条件判断与循环结构
if 语句
练习1.7
有两种常用形式:一种是用test命令,如上所示。另一种是用一对方括号将测试条件括起来。两种形式完全等价。例如,测试位置参数$1是否是已存在的普通文件,可写成:test -f " $1",也完全可写成:[ -f $ l ]
在格式上应注意,如果在test语句中使用shell变量,为表示完整、避免造成歧异起见最好用双引号将变量括起来。利用一对方括号表示条件测试时,在左方括号[之后、右方括号]之前各应有空格。
练习1.8

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。