- 1、本文档共61页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第9讲shell编程分析
3.3 条件测试 用test命令进行条件测试。格式为 test expression 或 [expression] 例1:测试字符串。 $ test “8” = “9” //测试字符串8是否等于9,=两边有空格 $ echo $? //$?表示上一条命令执行后的返回值 1 //其值为假,返回1 例2:测试字符串。 $ [ “8” = “8” ] //省略test,改用中括号形式,注意中括号中的空格 $ echo $? 0 备注:bash shell里面,为真返回0,为假返回1。 test命令可以和多种系统运算符一起使用。这些运算符可以分为4类:整数运算符、字符串运算符、文件运算符和逻辑运算符。 (1)数值运算符:用来判断数值表达式的真假 int1 -eq int2 如果int1 = int2,则为真。 int1 -ge int2 如果int1 = int2,则为真。 int1 -gt int2 如果int1 int2,则为真。 int1 -le int2 如果int1 = int2,则为真。 int1 -lt int2 如果int1 int2,则为真。 int1 -ne int2 如果int1 != int2,则为真。 (2)字符串运算符:用来判断字符串表达式的真假 str1 = str2 如果str1和str2相同,则为真。 str1 != str2 如果str1和str2不相同,则为真。 str 如果str不为空,则为真。 -n str 如果str的长度大于零,则为真。 -z str 如果str的长度等于零,则为真。 (3)文件运算符:用来判断文件是否存在、类型及属性 -d filename 如果filename为目录,则为真。 -f filename 如果filename为普通的文件,则为真。 -r filename 如果filename为只读,则为真。 -s filename 如果filename的长度大于零,则为真。 -w filename 如果filename为可写,则为真。 -x filename 如果filename为可执行,则为真。 -b filename 如果filename为块设备文件,则为真 …… 例:判断/etc是否为目录。 $[ -d /etc ] //判断/etc是否为目录 $ echo $? //显示其返回值 0 //其值为真,返回0 $ [ -w /etc ] //判断用户对目录/etc是否有写的权限 (4)逻辑运算符:用来结合表达式或取得表达式相反值 !expr 如果expr为假,则返回真。 expr1 -a expr2 如果expr1和expr2同时为真,则返回真。 expr1 -o expr2 如果expr1或expr2有一个为真,则返回真。 例:判断file1存在且具有可写的权限。 $[ -f file1 -a -w file1 ] 6.3.4 条件语句 Shell具有一般高级语言所具有的控制结构,如if语句、case语句。 1.if语句 if语句可根据表达式的值是真或假来决定要执行的程序段落。 if expressionl //若expressionl为真 then commands //则执行这些命令 elif expression2 //否则若expression2为真 then commands //则执行这些命令 else //若以上的表达式都不成立 commands //则执行这些命令 fi //结束if语句 例1:将显示目录内是否有example_if文件。 #!/bin/bash if[ -f example_if ] //判断文件是否存在 then echo There is a example_if file in current directory. else echo no example_if file in current directory. fi
文档评论(0)