linux操作系统shell编程.docx
- 文档编号:24573241
- 上传时间:2023-05-29
- 格式:DOCX
- 页数:16
- 大小:355.57KB
linux操作系统shell编程.docx
《linux操作系统shell编程.docx》由会员分享,可在线阅读,更多相关《linux操作系统shell编程.docx(16页珍藏版)》请在冰豆网上搜索。
linux操作系统shell编程
实验五Linux的shell编程
一、实验目的
1.了解常用shell的编程特点,掌握shell程序设计的基础知识。
2.认识和理解shell程序流程控制、shell程序的运行方式、shell程序的调试方法。
3.基本掌握编写shell程序的步骤、方法和技巧。
二、实验环境
Linux软件和电脑
三、实验内容或步骤
实验准备知识为书上5.3,5.4,5.5以及第23章内容,p73~84,p374-394。
1、shell脚本的建立同建立普通文本文件的方式相同,可利用编辑器vi或cat命令,进行程序录入和编辑加工。
由三条简单命令组成的Shell程序,文件名为prog。
ls–l
cal
who
2、shell脚本的执行(通常用三种方式)
1〕、输入定向的执行方式
sh<脚本名如:
sh 2〕、以脚本名作为Shell参数的执行方式 sh脚本名[参数]如: shprog 3〕、改执行权限后直接执行方式 如: #chmoda+xprog #./prog 3、Shell变量: 1〕、可写的环境变量 $echo$PS1 $PS1=“[\u@@@wdg-Linux-9]” 2)、位置参数: 在命令行传递给shell脚本的参数。 〔1〕位置参数及引用 可以编写一个shell脚本,当从命令行或者从其他shell脚本中调用它的时候,这个脚本接收假设干参数。 这些选项是通过Linux作为位置参数〔positionalparameter〕提供应shell程序的。 在shell脚本中应有变量,接收实参,这类变量的名称很特别,分别是1,2,3,…,这类变量称为位置变量。 位置参数1存放在位置变量1中,位置参数2存放位置变量2中,……,在程序中可以使用$1,$2,……来访问。 下述是一个shell程序的mypgm1,只带了一个参数〔名字〕,并在屏幕上显示这个名字: #Namedisplayprogram1 if[$#-eq0] then echo“Namenotprovided” else echo”Yournameis$1” fi 在pdksh和bash中,如果执行mypgm1如下: #.mypgm1 将得到输出: Namenotprovided 但是,如果执行mypgm1如下: #.mypgm1sanjia 则得到如下的输出: Yournameissanjia 〔2〕用set命令为位置参数赋值 在shell程序中可以利用set命令为位置参数赋值或重新赋值。 〔1〕一般格式: set [参数表] 〔2〕说明: 该命令后面无参数时,将显示系统中的系统变量的值;如果有参数将分别给位置参数赋值。 3)、用户自定义变量: a、字符串赋值,格式如下: 变量名=字符串 如: $mydir=/home/a $echo$mydir $echomydir b、如果在赋给变量的值中要含有空格、制表符或换行符,那么就应该用双引号把这个字符串括起来。 $myname=“zhangsan” c、变量值可以作为某个长字符串中的一部分。 如果它在长字符串的末尾,就可以利用直接引用形式。 $s1=ing $echowalk$s1orread$s1orleep$s1 如果它在长字符串的开头或中间,应该用{}把变量名括起来。 $dir=/home/user1 $echo${dir{}m1.c 4)、用不带参数的set命令可以显示所有“shell变量〔包括用户自定义变量〕名以及它们的当前值。 $set<回车> 4、Shell中的引号: 1〕、双引号〔“”〕 双引号括起来的字符,除$、倒引号、和反斜线(\)仍保留其特殊功能外,其余字符通常作为普通字符对待。 如: $echo“Mycurrentdiris`pwd`” $echo“Mycurrentdiris$HOME” 2)、单引号〔‘’〕 单引号内所有字符均作为普通字符对待。 如: $echo‘Mycurrentdiris`pwd`’ 3)、倒引号〔``〕 倒引号括起的字符串被Shell解释为命令行,在执行时先执行该命令行,并以它的标准输出结果取代整个倒引号部分。 常用的方式有以下几种: (1)、Shell解释执行 如: $echocurrentdiris`pwd` (2)、利用倒引号的Shell解释功能可以进行命令替换,即把倒引号中的命令的结果赋给指定变量。 如: $mypath=`pwd` $echoMydiris$mypath (3)、倒引号的嵌套应用,倒引号的嵌套时必须在内层的一组倒引号用反斜线〔\〕进行转义。 如: $mypath=`echomydiris\`pwd\`` $echo$mypath 程序实例: 1、创建一个简单的列目录和日期的shell脚本并运行之。 步骤: 1入以下命令,创建一个新文件: cat>new_script ⑵输入以下行: echoYourfilesare ls echotodayis date 按回车键将光标移到一个新行,按Ctrl+D键保存并退出。 ⑶检查文件内容,确保它是正确的: #catnew_script ⑷运行脚本,输入它的文件名: #new_script 该脚本不运行。 ⑸输入以下命令,显示文件的权限: #ls–lnew_script 权限说明该文件不是可执行。 要通过简单调用文件名来运行脚本,必须有权限。 ⑹输入以下命令,使new_script变成可执行文件。 chmod+xnew_script ⑺要查看新的权限,输入: ls–l 现在拥有文件的读、写和执行权限。 ⑻输入新脚本的名字以执行它: new_script 所有输入到文件的命令都执行,并输出到屏幕上。 ⑼如果接收到错误信息,比方: commandnotfound 输入以下命令: #./new_script 日4月112: 37: 00CST2012 该命令行通知shell到哪里寻找shell脚本new_script,即您的当前目录“.”。 2.编程提示用户输入两个单词,并将其读入,然后比较这两个单词,如果两个单词相同示“Match”,并显示“Endofprogram”,如果不同则显示“Endofprogram”。 提示: echo–n是显示内容,但不回车换行。 $cat>if1 echo–n“word1: ” readword1 echo–n“word2: ” readword2 iftest“$word1”=“$word2” then echo“Match” fi echo“Endofprogram.” <程序说明> ①if,then控制结构的语法是: iftest_command then commands fi ②其中test_command为test“$word1”=“$word2”,test是一个内置命令,如果它的第一个参数和第三个参数存在第二个参数所指定的关系,那么test将返回ture。 Shell将执行then和fi之间的命令。 否则执行fi后面语句。 修改上述程序,编程提示用户输入两个单词,并将其读入,然后比较这两个单词, 两个单词相同显示“Match”,不同则显示“Notmatch”,最后显示“Endofprogram”。 <编程提示>请使用if,then,else控制结构。 3、编程使用case结构创建一个简单的菜单,屏幕显示菜单: a.Currentdateandtime b.Usercurrentlyloggedin c.Nameoftheworkingdirectory d.Contentsoftheworkingdirectory Entera,b,cord: 根据用户输入选项做相应操作。 <参考程序> echo–e“\nCOMMANDMENU\n” echo“a.Currentdateandtime” echo“b.Usercurrentlyloggedin” echo“c.Nameoftheworkingdirectory” echo“d.Contentsoftheworkingdirectory\n” echo–n“Entera,b,cord: ” readanswer echo case“$answer”in a)date;; b)who;; c)pwd;; d)ls;; *) Echo“Thereisnoselection: $answer”;; Esac 4.用if,then,else控制结构编写一段shell小程序,根据执行时候获取的当前时间显示出不同的问候信息。 #! /bin/bash a=`date+%H` if(test$a-lt12); then echo"GoodMorning! " else echo"GoodAfternoon! " fi 四、实验结果 1.shell脚本的建立同建立普通文本文件的方式相同,可利用编辑器vi或cat命令,进行程序录入和编辑加工。 由三条简单命令组成的Shell程序,文件名为prog。 ls–l cal who 2.shell脚本的执行(通常用三种方式) 3.Shell变量: 1〕、可写的环境变量 2)、位置参数: 在命令行传递给shell脚本的参数。 〔2〕用set命令为位置参数赋值 3)、用户自定义变量: 4)、用不带参数的set命令可以显示所有“shell变量〔包括用户自定义变量〕名以及它们的当前值。 5、Shell中的引号: 程序实例: 1、创建一个简单的列目录和日期的shell脚本并运行之。 2.编程提示用户输入两个单词,并将其读入,然后比较这两个单词,如果两个单词相同示“Match”,并显示“Endofprogram”,如果不同则显示“Endofprogram”。 提示: echo–n是显示内容,但不回车换行。 3、编程使用case结构创建一个简单的菜单,屏幕显示菜单: 五、实验总结 通过这次试验,我了解了常用shell的编程特点以及shell程序设计的基础知识。 认识并且理解了shell程序流程控制、shell程序的运行方式、shell程序的调试方法。 通过仔细做这次试验,对于shell的编程方法和技巧的知识有了进步,在看出一些眉目,学会了shell编程的一些小知识之后,感觉还是挺有意思的。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- linux 操作系统 shell 编程