linux操作系统shell编程.doc_第1页
linux操作系统shell编程.doc_第2页
linux操作系统shell编程.doc_第3页
linux操作系统shell编程.doc_第4页
linux操作系统shell编程.doc_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

实验五 Linux的shell编程一、实验目的1.了解常用shell的编程特点,掌握shell程序设计的基础知识。2.认识和理解shell程序流程控制、shell程序的运行方式、shell程序的调试方法。3.基本掌握编写shell程序的步骤、方法和技巧。二、实验环境Linux软件和计算机三、实验内容或步骤实验准备知识为书上5.3,5.4,5.5以及第23章内容,p7384,p374-394。1、shell脚本的建立同建立普通文本文件的方式相同,可利用编辑器vi或cat命令,进行程序录入和编辑加工。 由三条简单命令组成的Shell程序,文件名为prog。 ls l cal who 2、 shell脚本的执行 (通常用三种方式)1)、输入定向的执行方式 sh 脚本名 如:sh prog2)、以脚本名作为Shell参数的执行方式 sh 脚本名 参数 如:sh prog3)、改执行权限后直接执行方式 如: # chmod a+x prog # ./prog3、 Shell变量:1)、可写的环境变量$ echo $PS1$ PS1=“uwdg-Linux-9”2)、位置参数:在命令行传递给shell脚本的参数。(1) 位置参数及引用可以编写一个shell脚本,当从命令行或者从其他shell脚本中调用它的时候,这个脚本接收若干参数。这些选项是通过Linux作为位置参数(positional parameter)提供给shell程序的。在shell脚本中应有变量,接收实参,这类变量的名称很特别,分别是1,2,3,这类变量称为位置变量。位置参数1存放在位置变量1中,位置参数2存放位置变量2中,在程序中可以使用$1,$2,来访问。下述是一个shell程序的mypgm1,只带了一个参数(名字),并在屏幕上显示这个名字:#Name display program1if $# -eq 0 thenecho“Name not provided”elseecho”Your name is $1”fi在pdksh和bash中,如果执行mypgm1如下:#.mypgm1将得到输出:Name not provided但是,如果执行mypgm1如下:#.mypgm1sanjia则得到如下的输出:Your name is sanjia(2)用set命令为位置参数赋值在shell程序中可以利用set命令为位置参数赋值或重新赋值。(1)一般格式:set 参数表(2)说明:该命令后面无参数时,将显示系统中的系统变量的值;如果有参数将分别给位置参数赋值。 3)、用户自定义变量:a、字符串赋值,格式如下:变量名=字符串如:$ mydir=/home/a $ echo $mydir $ echo mydirb、如果在赋给变量的值中要含有空格、制表符或换行符,那么就应该用双引号把这个字符串括起来。 $ myname=“zhang san”c、变量值可以作为某个长字符串中的一部分。如果它在长字符串的末尾,就可以利用直接引用形式。 $ s1=ing $ echo walk$s1 or read$s1 or leep$s1如果它在长字符串的开头或中间,应该用把变量名括起来。 $ dir =/home/user1 $ echo $dirm1.c4)、用不带参数的set命令可以显示所有“shell变量(包括用户自定义变量)名以及它们的当前值。 $ set 4、 Shell中的引号:1)、双引号(“”) 双引号括起来的字符,除$、倒引号、和反斜线()仍保留其特殊功能外,其余字符通常作为普通字符对待。 如:$ echo “My current dir is pwd” $ echo “My current dir is $HOME”2)、单引号() 单引号内所有字符均作为普通字符对待。如:$ echo My current dir is pwd3)、倒引号() 倒引号括起的字符串被Shell解释为命令行,在执行时先执行该命令行,并以它的标准输出结果取代整个倒引号部分。常用的方式有以下几种:(1)、Shell解释执行 如:$ echo current dir is pwd(2)、利用倒引号的Shell解释功能可以进行命令替换,即把倒引号中的命令的结果赋给指定变量。 如:$ mypath=pwd $ echo My dir is $mypath(3)、倒引号的嵌套应用,倒引号的嵌套时必须在内层的一组倒引号用反斜线()进行转义。 如:$ mypath=echo my dir is pwd $ echo $mypath程序实例:1、创建一个简单的列目录和日期的shell脚本并运行之。步骤:1 入下列命令,创建一个新文件:cat new_script 输入下列行: echo Your files are ls echo today is date 按回车键将光标移到一个新行,按Ctrl+D键保存并退出。检查文件内容,确保它是正确的:#cat new_script运行脚本,输入它的文件名:#new_script该脚本不运行。输入下列命令,显示文件的权限: #ls l new_script权限表明该文件不是可执行。要通过简单调用文件名来运行脚本,必须有权限。输入下列命令,使new_script 变成可执行文件。chmod +x new_script 要查看新的权限,输入: ls l现在拥有文件的读、写和执行权限。 输入新脚本的名字以执行它: new_script 所有输入到文件的命令都执行,并输出到屏幕上。 如果接收到错误信息,比如: command not found 输入下列命令: #./new_script日 4月 1 12:37:00 CST 2012 该命令行通知 shell 到哪里寻找shell脚本new_script,即您的当前目录“.”。2.编程提示用户输入两个单词,并将其读入,然后比较这两个单词,如果两个单词相同示“Match”,并显示“End of program”,如果不同则显示“End of program”。 提示: echo n 是显示内容,但不回车换行。 $ cat if1 echo n “word 1:” read word1 echo n “word 2:” read word2 if test “$word1” = “$word2” then echo “Match” fi echo “End of program.” if,then 控制结构的语法是: if test_command then commands fi 其中test_command 为test “$word1” = “$word2”, test 是一个内置命令,如果它的第一个参数和第三个参数存在第二个参数所指定的关系,那么test 将返回ture。Shell 将执行then 和fi 之间的命令。否则执行fi 后面语句。修改上述程序,编程提示用户输入两个单词,并将其读入,然后比较这两个单词, 两个单词相同显示“Match”,不同则显示“Not match”,最后显示“End of program”。 请使用 if,then,else 控制结构。 3、编程使用case 结构创建一个简单的菜单,屏幕显示菜单: a. Current date and time b. User currently logged in c. Name of the working directory d. Contents of the working directory Enter a,b,c or d: 根据用户输入选项做相应操作。 echo e “n COMMAND MENUn” echo “ a. Current date and time” echo “ b. User currently logged in” echo “ c. Name of the working directory” echo “ d. Contents of the working directoryn” echo n “Enter a,b,c or d:” read answer echo case “$answer” in a)date; b)who; c)pwd; d)ls; *) Echo “There is no selection : $answer”; Esac4.用if,then,else 控制结构编写一段shell小程序,根据执行时候获取的当前时间显示出不同的问候信息。 #!/bin/bash a=date +%H if (test $a -lt 12); then echo Good Morning! else echo Good Afternoon! fi4、 实验结果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”,并显示“End of program”,如果不同则显示“End of program”。 提示: echo

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论