《实验4 shell编程实验_一.pdf》由会员分享,可在线阅读,更多相关《实验4 shell编程实验_一.pdf(6页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、实验 4 shell 编程实验(一)一:实验目的 1 了解 shell 的作用和主要分类 2 掌握 bash 的建立和执行方式 3 掌握 bash 的基本语法 4 学会编写 shell 脚本 二:实验内容 1 shell 脚本的建立、编写和执行 2 历史命令和别名定义 3 shell 变量 预习:什么是 shell 脚本?要明白什么是 shell 脚本,首先要理解什么是脚本(script)。脚本是指一种未经编译而直接解释执行的程序。我们知道,程序代码写好后,有两种方式让它执行。一是通过编译器编译成二进制执行代码后提交给系统执行,而另一种则不经过编译,直接送给解释器解释执行。shell 脚本指的
2、就是一种通过 shell 来解释并执行的程序。UNIX 中的 shell,它既是一个界面程序,又是一个脚本的解释器,同时又能提供一种功能丰富的脚本语言供用户编写脚本程序。用户只需要通过 vi 等编辑器将脚本编写好(脚本本身上还是一个文本),通过命令行的形式提交给 shell,shell 便会对其解释并执行了。我们通过建立一个“hello world”程序来认识 shell 脚本是如何创建和执行的。以下是“hello world”的 shell 脚本程序的内容,请用 vi 编辑器录入并将其保存为hello 文件。#!/bin/bash echo hello world!然后按如下方式执行程序并得
3、出相应结果:#chmod 755 hello#./hello hello world!三:主要实验步骤 1 新建普通用户 henu,在 henu 的家目录下利用 vi 建立一个脚本文件,其中包括date、echo、pwd、ls 等常用命令。然后以不同方式执行该脚本。建立脚本文件 vi myprogram.sh#!/bin/bash#This is a shell script program echo“The tmie is date”echo“The directory is pwd”echo“It has ls l|wc-l files”a)利用 bash myprogram.sh 执行脚
4、本 b)修改脚本文件具有可执行权限 采用绝对路径和相对路径执行脚本文件 创建和执行 shell 脚本 关于 shell 脚本创建和运行的几点说明:(1)在 bash 中,每一个脚本的开头,必须有:#!/bin/bash(2)必须将脚本文件设置为可执行,即#chmod 755 myprogram ./myprogram 或者,使用如下方式执行 shell 脚本:#bash myprogram(3)如果 shell 脚本所放置的目录并不在当前所查找的路径中,可把这个目录名添加到查找路径中,那么就可以命令的形式执行该脚本。2 运行 history命令、配置历史命令环境。练习 history查看历史命
5、令,更改/etc/profile 文件中的 HISTSIZE 变量重新赋值,查看变化情况后,更改为原来的 profile 文件。3 体会 bash 的命令补齐和目录文件补全等功能。练习 Tab 键补全目录文件和命令。例如 在普通用户家目录/home/henu 中,新建目录文件 asdvwdfgzxck 通过目录文件补全方式进入该目录。cd asd(Tab)4 用 alias 定义别名,然后执行。alias 查看系统定义的别名,练习更改别名,更改别名后再更改回原来的别名。5 shell 脚本的特殊符号(1)引号 在 shell 中引号分为三种:双引号,单引号和反引号。当一个字符串中嵌入了空格时,
6、双引号能让 Shell 对该字符串以一个整体来解释,否则 Shell 将会分别作为命令处理而出错。请运行以下脚本。例子:双引号的使用。注意变量在双引号中同样能被访问。#!/bin/bash var=test string newvar=value of var is$var echo$newvar 由单引号括起来的字符都作为普通字符出现。特殊字符用单引号括起来以后,也会失去原有意义,而只作为普通字符解释。这样做能够阻止 Shell 解释一个变量。请运行以下脚本例子,并将结果以截图形式附于例子后。例子:单引号的使用。#!/bin/bash var=test string newvar=value
7、 of var is$var echo$newvar 反引号:反引号能告诉 Shell 执行由反引号所定义的字符串(实质为一命令行)。当需要把执行命令的结果存放在一个变量中时,就可以在 Shell 程序中使用反引号。请运行以下脚本例子,并将结果以截图形式附于例子后。例子:反引号的使用。#!/bin/bash string=”current directory is pwd”echo$string (2)反斜杠 反斜杠:能够阻止 shell 把后面的字符解释为特殊字符。如:#var=$test#echo$var (3)注释符 在 shell 编程中经常要对某些正文行进行注释,以增加程序的可读性。
8、在 Shell中以字符“#”开头的正文行表示注释行。6 输入输出重定向 练习 1)标准输出重定向 命令 文件 命令 文件 2)标准错误输出重定向 命令 2 文件 命令 2 文件 3)正确输出和错误输出同时保存 命令 文件 2&1 命令 文件 2&1 命令&文件 命令&文件 命令 文件 1 2 文件 2 7 多命令执行操作符 练习顺序执行;逻辑与&逻辑或|命令 1;命令 2 顺序执行 命令 1&命令 2 命令 1 正确执行则命令 2 才会执行 命令 1 执行不正确命令 2 不会执行 命令 1|命令 2 当命令 1 执行不正确,则命令 2 才会执行 当命令 1 正确执行,则命令 2 不会执行 8
9、Shell 有两种变量:环境变量和临时变量。在 Shell 脚本中临时变量又分为两类:用户定义的变量和位置参数。用户定义的变量是最普遍的 Shell 变量,变量名是以字母或下化线打头的字母、数字和下线符序列,并且大小写字母意义不同。变量名的长度不受限制。定义变量并赋值的一般形式是:变量名=字符串 例如,MYFILE=/usr/meng/ff/m1.c (1)定义并显示变量的值 在程序中使用变量的值时,要在变量名前面加上一个符号“$”。这个符号告诉Shell,要读取该变量的值。在/home/henu 目录下新建目录文件 file1$dir=/home/henu/file1$echo$dir /h
10、ome/henu/file1$echo dir dir$today=Monday$echo$today$Today Monday$str=Happy New Year!$echo Wish You$str Wish You Happy New Year!(2)read 命令 作为交互式输入手段,可以利用 read 命令由标准输入(即键盘)上读取数据,然后赋给指定的变量。其一般格式是:read 变量 1 变量 2.$read name-输入 read 命令 www-输入 name 的值$echo Your Name is$name.Your Name is www-显示输出的结果$read a
11、b c-read 命令有三个参数 crtvu cn edu-输入三个字符串,中间以空格隔开$echo Email:$a.$c.$b Email:-显示输出结果 利用 read 命令可交互式的为变量两赋值。输入数据时,数据间以空格或制表符作为分隔符。注意以下情况:*若变量个数与给定数据个数相同,则依次对应赋值,如上面例子所示。*若变量数少于数据个数,则从左至右依次给变量赋值,而最后一个变量取得所有余下数据的值。*若变量个数多余给定数据个数,则从左到右依次给变量赋值,后面的变量没有输入数据与之对应时,其值就为空串。思考题:编写一 shell 脚本,该程序在用户输入年、月之后,自动打印出该年该月的日历。运行脚本后如下:Please input the month 例如输入 11 Please input the year 例如输入 2014 输入 11 2014 后直接输出 2014 年 11 月的日历(3)数组$city0=Beijing$city1=Shanghai$city2=Tianjin$city5=Guangzhou 查看echo$city1 echo$city*echo$city6 echo$city等内容。
限制150内