版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、2021/3/101 本课内容 Shell 逻辑判断 Shell 条件判断 Shell 循环处理 2021/3/102 2 2 1、条件判断命令test test n1 -参数 n2(或 参数 表达式) 真返回0,假返回1。 (1)整数,比较运算符见下表 test 1 lt 4 #判断10 (4)其他参数 -a 逻辑与 -o 逻辑或 !逻辑非 2021/3/106 文件状态测试文件状态测试 -d目录-r可读 -f常规文件-w可写 -L符号连接-x可执行 -s文件长度大于0,非空-u文件有suid位设置 示例: -s haison.c 0表示成功,其他为失败,下同。 逻辑操作符逻辑操作符 -a
2、逻辑与(and),操作符两边均为真,结果为真,否则为假。 -o 逻辑或(or),操作符两边一边为真,结果为真,否则为假。 ! 逻辑否,条件为假,结果为真,反之。 示例: -r haison.c a w hai.c 2021/3/107 字符串测试字符串测试 =两个字符串相等-z空串 !=两个字符串不相等-n非空串 示例: -z $SHELL 数值测试数值测试 -eq数值相等(equal to)-lt第一个数小于第二个数(less than) -ne数值不相等(not equal to)-le第一个数小于等于第二个数 -gt第一个数大于第二个数(greater than) -ge第一个数大于等于
3、第二个数 示例: “10” -eq “12” 2021/3/108 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 echo has no para fi 2021/3/109 shell命令执行的相应顺序命令执行的相应顺序 p then #code block elif expression t
4、hen #code block else #code block fi Then 如果和表达如果和表达 式写在同一行的话,式写在同一行的话, 必须在表达式必须在表达式号用号用 分号,否则必须把分号,否则必须把 then写在下一行写在下一行 2021/3/1015 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 $3 fi #!/bin/bas
5、h 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 2021/3/1016 2.2 流程控制:分支结构 -case 语 句 pif条件语句用于在两个选项中选定条件语句用于在两个选项中选定 一项,而一项,而case条件选择为用户提供条件选择为用户提供 了根据字符串或变量的值从多个选了根据字符串或变量的值从多个选 项中选择一项的方法,其格式如下:项中选择一项的方法,其格式如下
6、: case string in exp-1) 若干个命令行1 ; exp-2) 若干个命令行2 ; *) 其他命令行 esac lcasecase表达式可以用来匹配一表达式可以用来匹配一 个给定的字符串,而不是数字个给定的字符串,而不是数字 (可别和(可别和C C语言里的语言里的 switch.caseswitch.case混淆)。混淆)。 lshellshell通过计算字符串通过计算字符串stringstring 的值,将其结果依次和分支表的值,将其结果依次和分支表 达式达式exp-1exp-1、exp-2exp-2等进行比较,等进行比较, 直到找到一个匹配的表达式为直到找到一个匹配的表达
7、式为 止,如果找到了匹配项则执行止,如果找到了匹配项则执行 它下面的命令直到遇到一对分它下面的命令直到遇到一对分 号号( (;) )为止。为止。 l在在casecase表达式中也可以使用表达式中也可以使用 shellshell的通配符的通配符(“(“* *”、 “?”、“ ”) ”)。通常用。通常用 “* *”作为作为casecase命令的最后表命令的最后表 达式以便使在前面找不到任何达式以便使在前面找不到任何 相应的匹配项时执行相应的匹配项时执行“其他命其他命 令行令行”的命令。的命令。 2021/3/1017 Exp8.sh 分支语句练习 #!/bin/bash if $# -lt 1 t
8、hen echo need input one 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 2021/3/1018 Menu.sh 简单的菜单功能 #! /bin/sh - clear echo -MENU- echo echo 1.Find files modified in last 24 hours echo 2.The free disk space echo 3.Space
9、 consumed by this user echo 4.Exit echo echo -n Select: read choice case $choice in 1)find $HOME -mtime -1 -print; 2)df; 3)du -s $HOME; 4)exit; *)echo Invalid option esac 2021/3/1019 2.3 控制结构控制结构forfor循环循环 格式格式 for for 变量名变量名 in in 列表列表 dodo 命令命令 donedone 当变量值在列表里当变量值在列表里,forfor循环即循环即 执行执行 一次所有命令,使用
10、变量名访一次所有命令,使用变量名访 问列问列 表中取值。表中取值。 嵌套循环可以将一个嵌套循环可以将一个forfor循环嵌循环嵌 在在 另一个另一个forfor循环里循环里 Exp9-0.sh #!/bin/bash counter=0 allfile=ls echo $allfile for FILES in $allfile do echo $FILES # counter=expr $counter + 1 (counter+) done echo = $counter in pwd #!/bin/bash i=$* for arg in $i do echo $arg done j=0
11、 2021/3/1020 2.3.1 for循环的另外形式 for循环中用seq产生循环次数 #!/bin/bash echo for: Traditional form: for var in . for j in $(seq 1 15) do echo $j done C语言形式的for循环语句 #!/bin/bash echo for: C language form: for ( exp1; exp2; exp3 ) for ( i=1; i=5; i+ ) do echo i=$i done 2021/3/1021 2.4 控制结构控制结构untiluntil循环循环 格式格式 un
12、til until 条件条件 dodo 命令命令 donedone until until 条件为假就循环执行一系列命令,条件为假就循环执行一系列命令, 直至条件为真停止。直至条件为真停止。 #!/bin/bash myvar=1 until $myvar -gt 10 do echo $myvar myvar=$( $myvar + 1 ) done 2021/3/1022 2.5 控制结构控制结构whilewhile循环循环 格式格式 while while 条件为真时执行循环条件为真时执行循环 dodo 命令命令 donedone WhileWhile循环用于不断执行一系列命令,循环用于
13、不断执行一系列命令, 也用于从输入文件中读取数据。虽然也用于从输入文件中读取数据。虽然 通常只有一个通常只有一个命令命令,但在,但在whilewhile和和dodo之之 间可以放几个间可以放几个命令命令。命令命令通常用作测通常用作测 试条件,只有当试条件,只有当命令命令的退出状态为的退出状态为0 0 时,时,dodo和和donedone之间之间命令命令才被执行,如才被执行,如 果退出状态不是果退出状态不是0 0,则循环终止。,则循环终止。 #!/bin/sh#!/bin/sh #whileTest#whileTest #to test the method of while #to test
14、the method of while COUNTER=0COUNTER=0 while $COUNTER -lt 10 while $COUNTER -lt 10 dodo echo $COUNTER echo $COUNTER COUNTER=expr $COUNTER + 1 COUNTER=expr $COUNTER + 1 donedone while read LINEwhile read LINE dodo echo $LINE echo $LINE done names.txtdone names.txt#ls lt names.txt 生成生成names.txtnames.txt 2021/3/1023 While循环的C语言形式 #!/bin/bash i=1 while($i100) do if($i%4=0) then echo $i fi i=$($i+1) done 2021/3/1024 Exp9.sh while 循环练习 #!/bin/sh number=1 while $number -le 10 do
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- GB/T 34912-2024工业锅炉系统节能设计指南
- 果园经营权转让合同模板
- 个人与公司间借款协议书范本2024年
- 婚前财产协议书公证流程
- 展览延期协议书范本
- 自由职业者合作工作室合伙协议
- 房屋中介服务协议书样式
- 设计合同补充协议范本
- 沥青运输合同模板
- 建筑施工合同补充协议模板
- 新苏教版科学三年级上册学生活动手册答案
- 压疮用具的使用护理课件
- 临床医学概论课程研究报告
- 长春工业大学开题报告模板
- 中学信息技术教学中如何渗透德育教育
- TWI培训教材完整版
- 家庭农场创业项目计划书
- 第5.3课《联系生活实际弘扬工匠精神》(课件)-【中职专用】高二语文同步课件(高教版2023·职业模块)
- 斐乐管理制度
- 15《我与地坛(节选)》说课稿2023-2024学年高中语文必修上册
- 2024版国开电大专科《课堂提问与引导》在线形考(阶段性学习测验一至六)+终考考核试题及答案
评论
0/150
提交评论