《Linux下Shell编程.pdf》由会员分享,可在线阅读,更多相关《Linux下Shell编程.pdf(32页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、LinuxLinuxLinuxLinux下下下下ShellShellShellShell编程简介编程简介编程简介编程简介2011-8-22西安理工大学计算机科学与工程学院内容安排内容安排内容安排内容安排综述篇综述篇命令篇命令篇变量篇变量篇条件测试篇条件测试篇控制结构篇控制结构篇函数篇函数篇2011-8-22西安理工大学计算机科学与工程学院综述篇综述篇综述篇综述篇综述篇综述篇综述篇综述篇 ShellShell是什么是什么 怎样写怎样写ShellShell CygwinCygwin简介简介 LinuxLinux黑洞黑洞2011-8-22西安理工大学计算机科学与工程学院综述篇综述篇综述篇综述篇综述篇
2、综述篇综述篇综述篇ShellShellShellShellShellShellShellShell是什么是什么是什么是什么是什么是什么是什么是什么壳壳(ShellShell)保护其内部的核保护其内部的核(KernelKernel)2011-8-22西安理工大学计算机科学与工程学院综述篇综述篇综述篇综述篇综述篇综述篇综述篇综述篇ShellShellShellShellShellShellShellShell是什么是什么是什么是什么是什么是什么是什么是什么ShellShell是一种具备特殊功能的程序,是一种具备特殊功能的程序,它是介于使用者和它是介于使用者和 UNIX/Linux UNIX/Lin
3、ux 操作系统之核心程序(操作系统之核心程序(kernelkernel)间的一个接口。)间的一个接口。为了对用户屏蔽内核的复杂性,也为了保护内核以免用户误操作造成为了对用户屏蔽内核的复杂性,也为了保护内核以免用户误操作造成损害,在内核的周围建了一个外壳损害,在内核的周围建了一个外壳(shellshell)。用户向。用户向shellshell提出请求,提出请求,shellshell解释并将请求传给内核。解释并将请求传给内核。使用较广的使用较广的shellshell有标准的有标准的BourneBourne shellshell(shsh)、KornKorn Shell(kshShell(ksh)、
4、C C shellshell(cshcsh)、Bourne Again Bourne Again Shell(bashShell(bash)等等。查看当前环境所用查看当前环境所用shellshell:echo$SHELLecho$SHELLshellshell的另一个重要特性是它自身就是一个解释型的程序设计语言,的另一个重要特性是它自身就是一个解释型的程序设计语言,shellshell程序设计语言支持绝大多数在高级语言中能见到的程序元素,程序设计语言支持绝大多数在高级语言中能见到的程序元素,如函数、变量、数组和程序控制结构。如函数、变量、数组和程序控制结构。shellshell编程语言简单易学
5、,任编程语言简单易学,任何在提示符中能键入的命令都能放到一个可执行的何在提示符中能键入的命令都能放到一个可执行的 shellshell程序中程序中。本质上,本质上,shellshell 脚本是命令行命令简单的组合到一个文件里面。脚本是命令行命令简单的组合到一个文件里面。ShellShell基本上是一个命令解释器,类似于基本上是一个命令解释器,类似于 DOSDOS下的下的。它接。它接收用户命令,然后调用相应的应用程序。收用户命令,然后调用相应的应用程序。2011-8-22西安理工大学计算机科学与工程学院综述篇综述篇综述篇综述篇综述篇综述篇综述篇综述篇怎样写怎样写怎样写怎样写怎样写怎样写怎样写怎样
6、写ShellShellShellShellShellShellShellShell利用利用vivi编辑器编辑脚本,将脚本命名为编辑器编辑脚本,将脚本命名为脚本功能脚本功能.shshShellShell脚本不是复杂的程序,它是按行脚本不是复杂的程序,它是按行解释的,脚本第一行总是以解释的,脚本第一行总是以#!/bin/#!/bin/shsh 开头,它通知系统以下的开头,它通知系统以下的ShellShell程序使用系统上的程序使用系统上的Bourne ShellBourne Shell来解释。来解释。第二行注释中写入脚本名,第三行注释第二行注释中写入脚本名,第三行注释开始写入脚本功能开始写入脚本功
7、能习惯。习惯。以下行进入脚本正式编写以下行进入脚本正式编写编写完后给脚本添加执行权限:编写完后给脚本添加执行权限:chmodchmod u+xu+x ScripNameScripName运行脚本:运行脚本:ScripNameScripName 或或 ././ScripNameScripName简单脚本示例:简单脚本示例:简单脚本示例:简单脚本示例:vi vi vi vi ShowHello.shShowHello.shShowHello.shShowHello.sh以下为脚本内容以下为脚本内容以下为脚本内容以下为脚本内容:#!/bin/#!/bin/shsh#ShowHello.shShowH
8、ello.sh#To show hello to somebody#To show hello to somebodyecho-echo-n n“EnterEnter Your Name:Your Name:”read NAMEread NAMEecho echo“Hello,$NAMEHello,$NAME!”保存,退出保存,退出保存,退出保存,退出vivivivi编辑器。编辑器。编辑器。编辑器。为脚本添加可执行权限:为脚本添加可执行权限:为脚本添加可执行权限:为脚本添加可执行权限:chmodchmodchmodchmod u+xu+xu+xu+x ShowHello.shShowHello
9、.shShowHello.shShowHello.sh运行脚本:运行脚本:运行脚本:运行脚本:ShowHello.shShowHello.shShowHello.shShowHello.sh2011-8-22西安理工大学计算机科学与工程学院综述篇综述篇综述篇综述篇综述篇综述篇综述篇综述篇cygwincygwincygwincygwincygwincygwincygwincygwin简介简介简介简介简介简介简介简介 cygwincygwin在在windowswindows下开发下开发linuxlinux程序程序!cygwincygwin是一个在是一个在windowwindows s平台上运行的平
10、台上运行的linuxlinux模拟环境,是模拟环境,是cygnuscygnus solutionssolutions公司开发的自由软件公司开发的自由软件。它。它把把gccgcc、gdbgdb、gasgas等开发工具进行了改进,使等开发工具进行了改进,使它们能够生成并解释它们能够生成并解释win32win32的目标文件,开发者的目标文件,开发者基于基于win32win32 apiapi写了一个写了一个unixunix系统系统库的模拟层库的模拟层 ,只要把这些工具的源代码和这个共享库,只要把这些工具的源代码和这个共享库(cygwincygwin dlldll)连接到一起,连接到一起,就可以使用就可
11、以使用unixunix主机上的交叉编译器来生成可以在主机上的交叉编译器来生成可以在windowswindows平台上运行的工具集平台上运行的工具集 。软件下载:软件下载:cygwincygwin的官方网站的官方网站: 推荐下载:推荐下载:http:/http:/ 软件安装:软件安装:在安装的过程中可选择默认安装路径:在安装的过程中可选择默认安装路径:c:cygwinc:cygwin 安装完后要修改安装完后要修改cygwincygwin目录下的目录下的cygwin.batcygwin.bat文件文件,在在echo off echo off 后面加上后面加上set CYGWIN=title set
12、 CYGWIN=title nteantea,这是因为,这是因为CygwinCygwin的的启动批处理启动批处理 文件需要启动文件需要启动UnixUnix文件系统模拟。文件系统模拟。2011-8-22西安理工大学计算机科学与工程学院综述篇综述篇综述篇综述篇综述篇综述篇综述篇综述篇LinuxLinuxLinuxLinuxLinuxLinuxLinuxLinux黑洞黑洞黑洞黑洞黑洞黑洞黑洞黑洞/dev/null/dev/null 是一个虚设的设备,俗称是一个虚设的设备,俗称“LinuxLinux黑洞黑洞”,任何对任何对/devdevdevdev/nullnullnullnull的写入都会成功,但数
13、据会消的写入都会成功,但数据会消失得无影无踪,没有任何反馈。失得无影无踪,没有任何反馈。所以经常把不想在屏幕显示的所以经常把不想在屏幕显示的信息全部送到信息全部送到/devdevdevdev/nullnullnullnull中,中,在在shellshell脚本中用得比较多。脚本中用得比较多。如:如:lsls l l /dev/null/dev/null还可以用来清空文件的内容:还可以用来清空文件的内容:cat cat/dev/null/dev/null FileNameFileName2011-8-22西安理工大学计算机科学与工程学院命令篇命令篇命令篇命令篇命令篇命令篇命令篇命令篇 用户管理用
14、户管理 目录管理目录管理 文件管理文件管理 权限管理权限管理2011-8-22西安理工大学计算机科学与工程学院命令篇命令篇命令篇命令篇命令篇命令篇命令篇命令篇用户管理用户管理用户管理用户管理用户管理用户管理用户管理用户管理新建用户新建用户(user adduser add)useradduseradd UserNameUserName 新建用户后,会在新建用户后,会在/home/home目录下建立一个以目录下建立一个以 UserNameUserName命名的命名的文件夹,用户每次登录时自动定位到该文件夹下文件夹,用户每次登录时自动定位到该文件夹下。为用户添加密码为用户添加密码(passwpas
15、sworord d)passwdpasswd UserNameUserName删除用户删除用户(useruser deldeleteete)userdeluserdel UserNameUserName 使用使用p p选项可以删除用户目录下的文件及与用户相关联的其他选项可以删除用户目录下的文件及与用户相关联的其他文件。文件。新建组群新建组群(group addgroup add)groupaddgroupadd GroupNameGroupName删除组群删除组群(groupgroup deldelete)ete)groupdelgroupdel GroupNameGroupName2011-
16、8-22西安理工大学计算机科学与工程学院命令篇命令篇命令篇命令篇命令篇命令篇命令篇命令篇用户管理用户管理用户管理用户管理用户管理用户管理用户管理用户管理用户身份用户身份 whoamiwhoami 查看登录用户查看登录用户 whowho 选项选项 -a -a 显示所有用户的所有信息显示所有用户的所有信息 -H-H 显示列标题显示列标题查看用户的操作查看用户的操作 w w 某一时刻用户的行为某一时刻用户的行为用户间切换用户间切换(s substitute ubstitute u user)ser)susu UserNameUserName 如:如:susu 或或susu root root 切换为
17、根用户切换为根用户 susu Haison Haison 切换为名为切换为名为HaisonHaison的用户的用户2011-8-22西安理工大学计算机科学与工程学院命令篇命令篇命令篇命令篇命令篇命令篇命令篇命令篇目录管理目录管理目录管理目录管理目录管理目录管理目录管理目录管理创建目录创建目录(m make ake dirdirectoryectory)mkdirmkdir DirecNameDirecName删除目录删除目录(r re em move ove dirdirectoryectory)rmdirrmdir DirecNameDirecName显示工作目录显示工作目录(p print
18、 rint w working orking d directoryirectory)pwdpwd显示目录内容显示目录内容(l li is st t)lsls 选项选项 选项选项:-a:-a 显示当前目录下的所有文件,包括以显示当前目录下的所有文件,包括以.开头的文件。开头的文件。-l-l 以长列表的形式显示文件列表以长列表的形式显示文件列表,如:如:-rw-r-rrw-r-r-1-1 haisonhaison haisonhaison 18 Nov 2 10:10 18 Nov 2 10:10 haison.chaison.c 2011-8-22西安理工大学计算机科学与工程学院命令篇命令篇命
19、令篇命令篇命令篇命令篇命令篇命令篇目录管理目录管理目录管理目录管理目录管理目录管理目录管理目录管理改变当前目录改变当前目录(c change hange d directoryirectory)cdcd 或或 cdcd 进入登录时的主目录进入登录时的主目录 cdcd /进入根目录进入根目录 cdcd .进入上一级目录进入上一级目录 cdcd /home/home 进入系统的进入系统的homehome目录目录 cdcd home home 进入当前目录下的进入当前目录下的homehome目录目录目录目录重命名重命名(m mo ov ve e)mvmv SourceDirecNameSourceD
20、irecName TargetDirecNameTargetDirecName目录拷贝目录拷贝(c co op py y)cpcp SourceDirecSourceDirec TargetDirecTargetDirec -r -r 拷贝目录下的文件、子目录及子目录下的文件拷贝目录下的文件、子目录及子目录下的文件2011-8-22西安理工大学计算机科学与工程学院命令篇命令篇命令篇命令篇命令篇命令篇命令篇命令篇文件管理文件管理文件管理文件管理文件管理文件管理文件管理文件管理新建文件新建文件 FileNameFileName 或或 touchtouch FileNameFileName 或或 v
21、ivi FileNameFileName删除文件删除文件(r re em move fileove file)rmrm 选项选项 FileNameFileName 选项:选项:-i-i 系统提示是否真要删除该文件系统提示是否真要删除该文件 -f-f 删除文件之前不提示任何确认信息删除文件之前不提示任何确认信息 -r-r 递归删除目录下所有子目录的内容递归删除目录下所有子目录的内容文件拷贝文件拷贝(c co op py y)cpcp SourceFileSourceFile TargetFileTargetFile文件链接文件链接(l li in nk)k)lnln s s SourceFile
22、SourceFile TargetFileTargetFile 创建文件链接创建文件链接,用用lsls l l查看,查看,会看到会看到TargetFileTargetFile-SourceFileSourceFile2011-8-22西安理工大学计算机科学与工程学院命令篇命令篇命令篇命令篇命令篇命令篇命令篇命令篇文件管理文件管理文件管理文件管理文件管理文件管理文件管理文件管理显示文件内容显示文件内容 moremore FileNameFileName 一次一屏的显示文件内容一次一屏的显示文件内容,空格或回车显示下一屏空格或回车显示下一屏 lessless FileNameFileName 一次
23、一屏的显示文件内容一次一屏的显示文件内容,空格或回车显示下一屏空格或回车显示下一屏 cat cat FileNameFileName 一次全部显示文件的内容一次全部显示文件的内容 cat file1 file2cat file1 file2 file3 file3 将将file1file1、file2file2的内容写到的内容写到file3file3,覆盖覆盖file3file3原内容原内容 cat file1cat file1file2 file2 将将file1file1的内容追加到的内容追加到file2,file2file2,file2原原内容不变内容不变 headhead FileNa
24、meFileName 只显示文件的前只显示文件的前1010行行 head head n n FileNameFileName 显示文件的前显示文件的前n n行行 tail tail FileNameFileName 只显示文件的后只显示文件的后1010行行 tail tail n n FileNameFileName 显示文件的后显示文件的后n n行行 nlnl FileNameFileName 以编号的形式一次全部显示文件的内容以编号的形式一次全部显示文件的内容,忽略空格忽略空格2011-8-22西安理工大学计算机科学与工程学院命令篇命令篇命令篇命令篇命令篇命令篇命令篇命令篇文件管理文件管理
25、文件管理文件管理文件管理文件管理文件管理文件管理 文件移动文件移动/重命名重命名(m mo ov ve)e)mvmv SourceFileSourceFile TargetFileTargetFile 将一个或多个文件将一个或多个文件移动移动到另外一个目录下,或者到另外一个目录下,或者将一个文件将一个文件重命名重命名为另一个文件。为另一个文件。文件查找文件查找(findfind)findfind 路径路径 选项选项 如:如:find/-name find/-name“LinuxLinux”-print -print 文件内容查找文件内容查找(grepgrep)如:如:grepgrep “mai
26、nmain”haison.chaison.c 文件类型文件类型 命令命令lsls l l以长列表形式显示文件的类型等以长列表形式显示文件的类型等,如如:-:-rw-r-rrw-r-r-目录目录(d directoryirectory)字符字符(c characterharacter)设备文件设备文件块块(b blocklock)设备文件设备文件普通文件普通文件类型类型s sp pl l前缀前缀d d本地套接口本地套接口(s socketocket)c c命名管道命名管道(p pipeipe)文件文件b b链接链接(l linkink)文件文件类型类型前缀前缀2011-8-22西安理工大学计算机
27、科学与工程学院命令篇命令篇命令篇命令篇命令篇命令篇命令篇命令篇权限管理权限管理权限管理权限管理权限管理权限管理权限管理权限管理文件访问权限文件访问权限 一个文件一经创建,就具有三种访问方式一个文件一经创建,就具有三种访问方式 e ex xcutecute:执行,如果是程序的话执行,如果是程序的话w write rite :写,可以编辑或删除它写,可以编辑或删除它r read ead :读,可以显示该文件的内容读,可以显示该文件的内容含义含义2 20 0=1=1x x2 21 1=2=2w w2 22 2=4=4r r八进制表示八进制表示字符字符-x xr r-w wr rx xw wr r-u
28、go类型 一个文件由1个类型和9个权限位来描述,9个权限位分为3组,每组3个权限位,具体表示如下所示:u:user,文件的属主g:group,文件的属主所在的组,属组o:other,其他的用户a:all,以上三种人2011-8-22西安理工大学计算机科学与工程学院命令篇命令篇命令篇命令篇命令篇命令篇命令篇命令篇权限管理权限管理权限管理权限管理权限管理权限管理权限管理权限管理改变文件改变文件/目录的权限目录的权限(chchange ange modmode e)chmodchmod u/g/o/au/g/o/a+/-/=+/-/=权限权限 FileName/DirecNameFileName/D
29、irecName 其中:其中:+:增加指定的权限:增加指定的权限 -:去掉指定的权限:去掉指定的权限 =:清除所选的权限并将其设置为制定的权限:清除所选的权限并将其设置为制定的权限 chmodchmod允许使用八进制符号作为模式,改变权限。允许使用八进制符号作为模式,改变权限。chmodchmod PermissionCodePermissionCode FileName/DirecNameFileName/DirecName 其中,其中,PermissionCodePermissionCode 按如下方式计算按如下方式计算-x xr r-w wr rx xw wr r-4+2+1=74+2=
30、64+1=5所以该文件/目录具有的权限为:7652011-8-22西安理工大学计算机科学与工程学院命令篇命令篇命令篇命令篇命令篇命令篇命令篇命令篇权限管理权限管理权限管理权限管理权限管理权限管理权限管理权限管理赋予同组用户写权限赋予同组用户写权限rw-rw-rrw-rw-r-chmodchmod g+wg+w haison.chaison.c清除文件的所有权限清除文件的所有权限-chmodchmod a=a=haison.chaison.c收回同组用户和其他用户的写权限收回同组用户和其他用户的写权限rw-rrw-r-r-r-chmodchmod go-w go-w haison.chaison
31、.c收回所有用户的执行权限收回所有用户的执行权限rw-rw-rwrw-rw-rw-chmodchmod a-x a-x haison.chaison.c含义含义结果结果命令命令chmod命令示例假定haison.c最初具有这样的权限rwxrwxrwx,连续操作如下赋予属主读、写和执行权限赋予属主读、写和执行权限rwxrwx-chmodchmod 700 700 haison.chaison.c赋予属主、属组读和写的权限赋予属主、属组读和写的权限rw-rwrw-rw-chmodchmod 660 660 haison.chaison.c赋予属主读、写权限,其他用户读权限赋予属主读、写权限,其他用
32、户读权限rw-rrw-r-r-r-chmodchmod 644 644 haison.chaison.c赋予所有用户读和写的权限赋予所有用户读和写的权限rw-rw-rwrw-rw-rw-chmodchmod 666 666 haison.chaison.c含义含义结果结果命令命令2011-8-22西安理工大学计算机科学与工程学院命令篇命令篇命令篇命令篇命令篇命令篇命令篇命令篇权限管理权限管理权限管理权限管理权限管理权限管理权限管理权限管理 -rw-r-rrw-r-r-1-1 haisonhaison haisonhaison 18 Nov 2 10:10 18 Nov 2 10:10 hais
33、on.chaison.c改变文件改变文件/目录的属主目录的属主(chchange ange ownowner)er)chownchown Owner Owner FileName/DirecNameFileName/DirecName 如:如:chownchown Dave Dave haison.chaison.c改变文件改变文件/目录的属组目录的属组(chchange ange grgrououp p)chgrpchgrp Group Group FileName/DirecNameFileName/DirecName 如:如:chgrpchgrp Dave Dave haison.cha
34、ison.c改变文件改变文件/目录的属主和属组目录的属主和属组 chownchown owner:groupowner:group FileName/DirecNameFileName/DirecName 如:如:chownchown Dave:DaveDave:Dave haison.chaison.c2011-8-22西安理工大学计算机科学与工程学院变量篇变量篇变量篇变量篇变量篇变量篇变量篇变量篇变量可以定制用户本身的工作环境,使用变量可以保存有用信息,使变量可以定制用户本身的工作环境,使用变量可以保存有用信息,使系统获知用户相关设置,也用于保存暂时信息。系统获知用户相关设置,也用于保存暂
35、时信息。变量一般都用大写字母表示使用 echo命令可以显示单个变量的取值,要在变量名前面加$如:USER=“haison”echo$USER如果设置变量时,不想再改变其值,可以将其设置为只读,只要在变量名前加readonly使用set命令可以显示所有本地定义的 shell变量使用unset 变量名可以清除对变量的定义2011-8-22西安理工大学计算机科学与工程学院变量篇变量篇变量篇变量篇变量篇变量篇变量篇变量篇本地变量:用户自定义的变量。环境变量:用于所有用户变量,用于用户进程前,必须用export命令导出。位置变量:$0(脚本名),$1-$9:脚本参数。特定变量:脚本运行时的一些相关信息。
36、最后命令的退出状态,最后命令的退出状态,0 0表示没有错误,其他任何值表明有错误表示没有错误,其他任何值表明有错误$?$?上一个命令的最后一个参数上一个命令的最后一个参数$-$-与与$#$#相同,使用时加引号,并在引号中返回参数个数相同,使用时加引号,并在引号中返回参数个数$后台运行的后台运行的(&)(&)最后一个进程的最后一个进程的IDID号号$!$!脚本运行时当前进程的脚本运行时当前进程的IDID号,常用作临时变量的后缀,如号,常用作临时变量的后缀,如haisonhaison.$.$传递到脚本的参数,与位置变量不同,此选项参数可超过传递到脚本的参数,与位置变量不同,此选项参数可超过 9 9
37、个个$*传递到脚本的参数个数传递到脚本的参数个数$#$#2011-8-22西安理工大学计算机科学与工程学院变量篇变量篇变量篇变量篇变量篇变量篇变量篇变量篇示例:示例:#!/bin/#!/bin/shsh#VarTest.shVarTest.sh#To test the variables#To test the variablesUSER=USER=haisonhaisonecho echo Hello,$USER,theHello,$USER,the output of this script are as output of this script are as follows:follo
38、ws:echo The script name echo The script name is :is :basenamebasename$0$0echo The first echo The first paramparam of the script is :$1 of the script is :$1echo The second echo The second paramparam of the script is :$2 of the script is :$2echo The tenth echo The tenth paramparam of the script is :$1
39、0 of the script is :$10echo All the echo All the paramsparams you input are :$you input are :$*echo The number of the echo The number of the paramsparams you input are:$#you input are:$#echo The process ID for this script is :$echo The process ID for this script is :$echo The exit status of this scr
40、ipt echo The exit status of this script is :$?is :$?2011-8-22西安理工大学计算机科学与工程学院条件测试篇条件测试篇条件测试篇条件测试篇条件测试篇条件测试篇条件测试篇条件测试篇文件状态测试文件状态测试可执行可执行-x-x符号连接符号连接-L-L可写可写-w-w常规文件常规文件-f-f文件有文件有suidsuid位设置位设置-u-u文件长度大于文件长度大于0 0,非空,非空-s-s可读可读-r-r目录目录-d-d示例:示例:-s -s haison.chaison.c 0 0表示成功,其他为失败,下同。表示成功,其他为失败,下同。逻辑操作
41、符逻辑操作符 -a-a 逻辑与逻辑与(and),(and),操作符两边均为真,结果为真,否则为假。操作符两边均为真,结果为真,否则为假。-o-o 逻辑或逻辑或(or),(or),操作符两边一边为真,结果为真,否则为假。操作符两边一边为真,结果为真,否则为假。!逻辑否逻辑否,条件为假,结果为真,反之。条件为假,结果为真,反之。示例:示例:-r -r haison.chaison.c a a w w hai.chai.c 2011-8-22西安理工大学计算机科学与工程学院条件测试篇条件测试篇条件测试篇条件测试篇条件测试篇条件测试篇条件测试篇条件测试篇字符串测试字符串测试非空串非空串-n-n两个字符
42、串不相等两个字符串不相等!=空串空串-z-z两个字符串相等两个字符串相等=示例:示例:-z$SHELL -z$SHELL 数值测试数值测试第一个数小于等于第二个数第一个数小于等于第二个数-le-le数值不相等数值不相等(n not ot e equal to)qual to)-nene第一个数大于等于第二个数第一个数大于等于第二个数-gege第一个数大于第二个数第一个数大于第二个数(g greater reater t than)han)-gtgt第一个数小于第二个数第一个数小于第二个数(l less ess t than)han)-ltlt数值相等数值相等(eqequal to)ual to
43、)-eqeq示例:示例:“1010”-eqeq “1212”2011-8-22西安理工大学计算机科学与工程学院控制结构篇控制结构篇控制结构篇控制结构篇控制结构篇控制结构篇控制结构篇控制结构篇选择结构循环结构if语句:if then else 提供条件测试case 语句:允许匹配模式、单词或值for:每次依次处理列表内的信息,直至循环耗尽。until:不常用。条件在循环末尾,至少执行一次。while:条件在循环头部。2011-8-22西安理工大学计算机科学与工程学院控制结构篇控制结构篇控制结构篇控制结构篇控制结构篇控制结构篇控制结构篇控制结构篇if if if if if if if if语句语
44、句语句语句语句语句语句语句格式格式1 1 ifif 条条件件 then then 命令命令 fifi 格式格式2 2 ifif 条件条件 ;thenthen命令命令 fifi 或格式格式3 3 ifif 条条件件 then then 命令命令1 1 elseelse 命令命令2 2 fifi 格式格式4 4 ifif 条件条件1 1 then then 命令命令1 1 elifelif 条件条件2 2 thenthen 命令命令2 2 elseelse 命令命令3 3 fifi 示例示例#!/bin/#!/bin/shsh#ifTestifTest#to show the method of
45、if#to show the method of if echo-e Enter the first integer:cecho-e Enter the first integer:cread FIRSTread FIRSTecho-n Enter the second integer:echo-n Enter the second integer:read SECONDread SECONDif$FIRST-if$FIRST-gtgt$SECOND$SECOND then then echo$FIRST is greater than echo$FIRST is greater than$S
46、ECOND$SECOND elifelif$FIRST-$FIRST-gtgt$SECOND$SECOND then then echo$FIRST is less than$SECOND echo$FIRST is less than$SECOND elseelse echo$FIRST is equal to$SECOND echo$FIRST is equal to$SECOND fifi2011-8-22西安理工大学计算机科学与工程学院控制结构篇控制结构篇控制结构篇控制结构篇控制结构篇控制结构篇控制结构篇控制结构篇casecasecasecase语句语句语句语句语句语句语句语句格式格式
47、 case case 值值 inin 模式模式1)1)命令命令1 1 ;*)命令命令n n ;esacesac取值后面必须为单词取值后面必须为单词inin,每一个模式必须以每一个模式必须以右括右括号号结束。取值可以为变量或常数。取值检测匹配的结束。取值可以为变量或常数。取值检测匹配的每一个模式,一旦模式匹配,其间所有命令开始每一个模式,一旦模式匹配,其间所有命令开始执行直至执行直至;。执行完匹配模式相应命令后不再继。执行完匹配模式相应命令后不再继续其他模式。如果无一匹配模式,使用续其他模式。如果无一匹配模式,使用*号捕获号捕获该值,再接受其他输入。该值,再接受其他输入。示例示例#!/bin/s
48、h#caseTest#to test the method of caseUSER=whoamicase$USER in root)echo“You can do all the operations”;Dave)echo You can do some operations”;*)echo Sorry,you can not do anything ;esac 2011-8-22西安理工大学计算机科学与工程学院控制结构篇控制结构篇控制结构篇控制结构篇控制结构篇控制结构篇控制结构篇控制结构篇forforforfor循环循环循环循环格式格式for for 变量名变量名 inin 列表列表dodo
49、 命令命令donedone当变量值在列表里当变量值在列表里,forfor循环即执行循环即执行一次所有命令,使用变量名访问列一次所有命令,使用变量名访问列表中取值。表中取值。嵌套循环可以将一个嵌套循环可以将一个forfor循环嵌在循环嵌在另一个另一个forfor循环里循环里 示例示例#!/bin/#!/bin/shsh#forTestforTest#to test the method of for#to test the method of forCOUNTER=0COUNTER=0for FILES in for FILES in*do do COUNTER=COUNTER=exprexpr
50、$COUNTER+1$COUNTER+1done done echo There are$COUNTER files in echo There are$COUNTER files in pwdpwd 2011-8-22西安理工大学计算机科学与工程学院控制结构篇控制结构篇控制结构篇控制结构篇控制结构篇控制结构篇控制结构篇控制结构篇untiluntiluntiluntil循环循环循环循环格式格式 until until 条件条件 dodo 命令命令 donedoneuntil until 执行一系列命令,直至条件为执行一系列命令,直至条件为真真时停止时停止示例示例#!/bin/sh#untilT