第五章 Shell的控制结构.ppt

  1. 1、本文档共47页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第五章 Shell的控制结构

第五章 Shell的控制结构 条件和 test 命令 if 结构 case 结构 for 结构 while 结构 until 结构 循环体中的其它命令 5.1 条件与 test 命令 ? 简单条件 在高级语言中判断条件依赖于运算的结果,而 Shell语言依赖条件是命令执行的“出口状态”。 Shell命令的“出口状态”($?): 成功:0 、 true 失败:x 、 false (x 为非0数值) 例:判断指定目录是否存在, 并显示相应信息。 # cat checkdir test -d $1 echo “$1 is a dictory” exit 0 echo “$1 is not a dictroy” exit 1 5.1 条件与 test 命令(续1) ? test 命令 test 命令可用于对字符串、整数及文件进行各 类测试。其命令格式如下: test expression 或 [ expression ] 注意 [ ] 中的空格) expression 是测试的条件,计算结果: 为真,则返回“零”出口状态, 为假,否则返回“非零” 出口状态。 例:判断当前上机用户人数是否多于10 ? # test `who | wc -l ` -gt 10 # echo $? 5.1 条件与 test 命令(续2) ? test 字符串测试表达式 5.1 条件与 test 命令(续3) 例1:两个字符串进行比较 # user=smith # test $user = smith # echo $? 0 例2:查找指定的文件或目录 # cat search test $1 || { echo err: no parameter ; \ exit 1; } find . -name $1 -print 5.1 条件与 test 命令(续4) 例2:带有空格的字符串比较 # month=January # test $month = January # echo $? 1 # test $month = January # echo $? 0 区别:Shell在处理变量时,遇到有双引号将保留其内容,而省略双引号时,将滤去空格。 5.1 条件与 test 命令(续7) 例3:带有空格的字符串比较 # a=testing string # test $a = testing string # echo $? 0 # test $a = testing string test: unknown operator string Shell处理变量 $a 时,将其进行变量替换,然 后将结果(testing string)传递给test,而test将string 作为操作符来处理,因此出错。 5.1 条件与 test 命令(续8) 例4:带有空串(或未设置的字符串比较) # name= # test $name = smith # echo $? 1 # test $name = smith test: argument expected Shell处理变量$name时,双引号将其括起 的内容作为一个“位置持有者”来保留,并把该 值传递给test,保证处理的正常执行。 5.1 条件与 test 命令(续9) 例4:带有空串的字符串比较 # blanks= # test $blanks # echo $? 1 # test $blanks # echo $? 0 Shell处理变量$blanks时,将空格滤去,使其 变为空串传递给test;而双引号保留 “位置持有 者”的位置,其值为一个空格(空白符),传递 给test。 5.1 条件与 test 命令(续10) 例4:带有算符的字符串比较 # symvar== # test -z $symvar test: argument expected 出错的原因是“=”运算符比“-z”运算符的优先级 要高,因此,test 命令期望在等号之后要有一个自变量。 为避免上述问题的发生,可用下面命令形式替换

文档评论(0)

jyf123 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:6153235235000003

1亿VIP精品文档

相关文档