Linux Shell 条件判断语法.ppt_第1页
Linux Shell 条件判断语法.ppt_第2页
Linux Shell 条件判断语法.ppt_第3页
Linux Shell 条件判断语法.ppt_第4页
Linux Shell 条件判断语法.ppt_第5页
已阅读5页,还剩19页未读 继续免费阅读

下载本文档

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

文档简介

1、本课内容,Shell 逻辑判断 Shell 条件判断 Shell 循环处理,2,1、条件判断命令test test n1 -参数 n2(或 参数 表达式) 真返回0,假返回1。 (1)整数,比较运算符见下表 test 1 lt 4 #判断14 echo $? #结果为0 test语句的等价形式 1 lt 4 可用中括号代替test,把表达式括起来实现判断 注意表达式与中括号间有空格。,-lt小于 -le小于等于 -gt大于 -ge大于等于 -eq等于 -ne不等于,3,eg1.sh 若输入的参数x 是正数,显示 x number is positive,4,(2)文件测试,-f存在且是普通文件

2、 -d存在且是目录 -s存在且字节数大于0 -r存在且可读 -w存在且可写 -x存在且可执行 如:test -d “mydoc” 判断mydoc是否是目录,eg2:检测从命令行输入的文件是否存在,5,(3)字符串测试 test s 字符串s非空 test s1=s2字符串s1等于s2 test s1!=s2字符串s1不等于s2 test -z s字符串长=0,即为空串 test -n字符串长0 (4)其他参数 -a逻辑与 -o逻辑或 !逻辑非,文件状态测试,示例: -s haison.c 0表示成功,其他为失败,下同。,逻辑操作符 -a 逻辑与(and),操作符两边均为真,结果为真,否则为假。

3、 -o 逻辑或(or),操作符两边一边为真,结果为真,否则为假。 ! 逻辑否,条件为假,结果为真,反之。,示例: -r haison.c a w hai.c ,字符串测试,示例: -z $SHELL ,数值测试,示例: “10” -eq “12” ,test 和 命令,Test命令的别名 ,在usr/bin目录下 test 和 的语法如下:test expression expression 以上两种表达式等价 在有if 语句的时候一般使用 不用test,Exp51.sh #!/bin/bash if -n $1 -a -n $2 then echo para is $1,$2 else ec

4、ho has no para fi,shell命令执行的相应顺序, then #code block elif expression then #code block else #code block fi Then 如果和表达式写在同一行的话,必须在表达式号用分号,否则必须把then写在下一行,Exp7.sh 分支语句练习,#!/bin/bash if $# -lt 2 then echo Must have two parameter at least exit 0 elif $# -eq 2 ;then echo para1 = $1,para2 = $2 else echo $1 $2

5、 $3 fi,#!/bin/bash if $# -lt 2 then echo Must have two parameter at least exit 0 else if $# -eq 2 ;then echo para1 = $1,para2 = $2 else echo $1 $2 $3 fi fi,2.2 流程控制:分支结构 -case 语 句,if条件语句用于在两个选项中选定一项,而case条件选择为用户提供了根据字符串或变量的值从多个选项中选择一项的方法,其格式如下: case string in exp-1) 若干个命令行1 ; exp-2) 若干个命令行2 ; *) 其他命

6、令行 esac,case表达式可以用来匹配一个给定的字符串,而不是数字(可别和C语言里的switch.case混淆)。 shell通过计算字符串string的值,将其结果依次和分支表达式exp-1、exp-2等进行比较,直到找到一个匹配的表达式为止,如果找到了匹配项则执行它下面的命令直到遇到一对分号(;)为止。 在case表达式中也可以使用shell的通配符(“*”、“?”、“ ”)。通常用“*”作为case命令的最后表达式以便使在前面找不到任何相应的匹配项时执行“其他命令行”的命令。,Exp8.sh 分支语句练习,#!/bin/bash if $# -lt 1 then echo need

7、input one file,at lease exit 0 fi case $1 in *tar*) echo this is a tar file ; *tgz) echo this is a tgz file ; *) echo this is a common file ; esac,Menu.sh 简单的菜单功能,#! /bin/sh -clearecho -MENU-echoecho 1.Find files modified in last 24 hoursecho 2.The free disk spaceecho 3.Space consumed by this userec

8、ho 4.Exitecho echo -n Select:read choicecase $choice in1)find $HOME -mtime -1 -print;2)df;3)du -s $HOME;4)exit;*)echo Invalid optionesac,2.3 控制结构for循环,格式 for 变量名 in 列表 do 命令 done 当变量值在列表里,for循环即执行 一次所有命令,使用变量名访问列 表中取值。 嵌套循环可以将一个for循环嵌在 另一个for循环里,Exp9-0.sh #!/bin/bash counter=0 allfile=ls echo $allfi

9、le for FILES in $allfile do echo $FILES # counter=expr $counter + 1 (counter+) done echo file count = $counter in pwd,#!/bin/bash i=$* for arg in $i do echo $arg done j=0,2.3.1 for循环的另外形式,for循环中用seq产生循环次数 #!/bin/bashecho for: Traditional form: for var in .for j in $(seq 1 15)do echo $jdone,C语言形式的for

10、循环语句 #!/bin/bash echo for: C language form: for ( exp1; exp2; exp3 )for ( i=1; i=5; i+ )do echo i=$idone,2.4 控制结构until循环,格式 until 条件 do 命令 done until 条件为假就循环执行一系列命令,直至条件为真停止。,Exp10.sh #!/bin/bashmyvar=1until $myvar -gt 10 do echo $myvar myvar=$( $myvar + 1 )done,2.5 控制结构while循环,格式 while 条件为真时执行循环 do

11、 命令 done While循环用于不断执行一系列命令, 也用于从输入文件中读取数据。虽然 通常只有一个命令,但在while和do之 间可以放几个命令。命令通常用作测 试条件,只有当命令的退出状态为0 时,do和done之间命令才被执行,如 果退出状态不是0,则循环终止。,Exp11.sh #!/bin/sh #whileTest #to test the method of while COUNTER=0 while $COUNTER -lt 10 do echo $COUNTER COUNTER=expr $COUNTER + 1 done while read LINE do echo $LINE done names.txt 生成names.txt,While循环的C语言形式,#!/bin/bash i=1while($i100)do if($i%4=0) then echo $i fi i=

温馨提示

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

评论

0/150

提交评论