10-2shell编程.ppt
《10-2shell编程.ppt》由会员分享,可在线阅读,更多相关《10-2shell编程.ppt(58页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、Linux Shell编程编程shell程序设计的流程控制和其他高级程序设计语言一样,shell提供了用来控制程序执行流程的命令,包括条件分支和循环结构,用户可以用这些命令建立非常复杂的程序。与传统的语言不同的是,shell用于指定条件值的不是布尔表达式而是命令和字符串。test测试命令test命令用于检查某个条件是否成立,它可以进行数值、字符和文件三个方面的测试,其测试符和相应的功能分别如下:(1)数值测试:-eq:等于则为真-ne:不等于则为真-gt:大于则为真-ge:大于等于则为真-lt:小于则为真-le:小于等于则为真(2)字符串测试:=:等于则为真!=:不相等则为真-z字符串:字符串
2、长度伪则为真-n字符串:字符串长度不伪则为真(3)文件测试:-e文件名:如果文件存在则为真-r文件名:如果文件存在且可读则为真-w文件名:如果文件存在且可写则为真-x文件名:如果文件存在且可执行则为真-s文件名:如果文件存在且至少有一个字符则为真-d文件名:如果文件存在且为目录则为真-f文件名:如果文件存在且为普通文件则为真-c文件名:如果文件存在且为字符型特殊文件则为真-b文件名:如果文件存在且为块特殊文件则为真另外,Linux还提供了与(“!”)、或(“-o)、非(“-a”)三个逻辑操作符用于将测试条件连接起来,其优先级为:“!”最高,“-a”次之,“-o”最低。example$test3
3、-gt4&echotrue|echofalse示例中,-gt操作符对两个字符值之间执行算术比较$abc!=def;echo$?用的形式比较两个字符串不相等$test-d$HOME;echo$?测试HOME变量的值,用单目操作符-d检查它是不是目录testabc=def;echo$?$abc!=def;echo$?$abcdef;echo$?$abcabc;echo$?if条件语句shell程序中的条件分支是通过if条件语句来实现的,其一般格式为:if条件命令串then条件为真时的命令串else条件为假时的命令串fiififthenelifthenelsefielif和else是可选项例子#!/
4、bin/bashnum1=10num2=11if$num1-gt5thenechothetestvalue$num1isgreaterthan5fiif$num2-eq$num1thenechothevaluesareequalelseechothevaluesaredifferentfi#!/bin/bashtestuser=rootif$USER!=$testuserthenechothisisnot$testuserelseechowelcome$testuserfi#!/bin/bashstr1=aaastr2=bbbif$str1$str2thenecho$str1isgreater
5、than$str2elseecho$str1islessthan$str2fi在脚本中单独使用了大于号,虽然没报错,但结果是错误的#!/bin/bashstr1=aaastr2=bbbif$str1$str2thenecho$str1isgreaterthan$str2elseecho$str1islessthan$str2fi#!/bin/bashstr1=aaastr2=if-n$str1/长度是否大于0thenechothestring$str1isnotemptyelseechothestring$str1isemptyfiif-z$str2/长度是否为0thenechothestri
6、ng$str2isemptyelseechothestring$str2isnotemptyfiif-z$str3/长度是否为0thenechothestring$str3isemptyelseechothestring$str3isnotemptyfi使用-f确定对象是文件#!/bin/bashif-e$HOMEthenechothe$HOMEexists!if-f$HOMEthenechoyes,itisafileelseechono,itisnotafileif-f$HOME/.bash_historythenechobut$HOME/.bash_historyisafileelseec
7、hoitisnotafiletoofifielseechothereisnotobject!fi-d确定是否目录#!/bin/bashif-d$HOMEthenechoyourhomedirectoryexistscd$HOMElselseechothereissometingwrongfi-e检测对象是否存在#!/bin/bashif-e$HOMEthenechotheHDexistsif-e$HOME/myfilethenechothemyfileexistselsetouch$HOME/myfileechocreatingnewfilenamemyfilefifi通过-r可检测可读性#!
8、/bin/bashtestfile=/etc/shadowif-f$testfilethenif-r$testfilethenls-l$testfileelseechoimunabletoreadthefilefielseechothefiledoesntexistfi通过-s检测文件是否为空#!/bin/bashfile=testfiletouch$fileif-s$filethenechothefileexistsandhasdatainitelseechothefileexistsbutemptyfidate$fileif-s$filethenechothefileexistsandha
9、sdatainitelseechothefileexistsbutemptyfi通过-w检测文件是否可写#!/bin/bashfile=$HOME/testfiletouch$filechmodu-w$filenow=dateif-w$filethenechothefilecouldbewrittenelseechothefilecouldntbewrittenfichmodu+w$fileif-w$filethenechothefilecouldbewritten$now$HOME/testfileechoandthefileviews$fileelseechothefilecouldntb
10、ewrittenfi通过-x可以检测文件是否可被执行#!/bin/bashfile=$HOME/testfile2touch$filechmodu+x$fileif-x$filethenechothefilecouldberunelseechothefilecouldntberunfi通过-O可以检测文件的所有者#!/bin/bashfile=/etc/passwdif-O$filethenechoyouaretheownerofthe$fileelseechoyouarenttheownerofthe$filefi-G检测文件的默认组#!/bin/bashfile=/etc/passwdif
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 10 shell 编程
限制150内