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

下载本文档

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

文档简介

本课内容 Shell 逻辑判断 Shell 条件判断 Shell 循环处理 2 1、条件判断命令test test n1 -参数 n2(或 参数 表达式) 真返回0,假返回1。 (1)整数,比较运算符见下表 test 1 lt 4 #判断10 (4)其他参数 -a逻辑与 -o逻辑或 !逻辑非 文件状态测试 -d目录-r可读 -f常规文件-w可写 -L符号连接-x可执行 -s文件长度大于0,非空-u文件有suid位设置 示例: -s haison.c 0表示成功,其他为失败,下同。 逻辑操作符 -a 逻辑与(and),操作符两边均为真,结果为真,否则为假。 -o 逻辑或(or),操作符两边一边为真,结果为真,否则为假。 ! 逻辑否,条件为假,结果为真,反之。 示例: -r haison.c a w hai.c 字符串测试 =两个字符串相等-z空串 !=两个字符串不相等-n非空串 示例: -z $SHELL 数值测试 -eq数值相等(equal to)-lt第一个数小于第二个数(less than) -ne数值不相等(not equal to)-le第一个数小于等于第二个数 -gt第一个数大于第二个数(greater than)-ge第一个数大于等于第二个数 示例: “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 echo “has no para“ fi shell命令执行的相应顺序 p 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 $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 语 句 pif条件语句用于在两个选项中选定 一项,而case条件选择为用户提供 了根据字符串或变量的值从多个选 项中选择一项的方法,其格式如下 : case string in exp-1) 若干个命令行1 ; exp-2) 若干个命令行2 ; *) 其他命令行 esac lcase表达式可以用来匹配一 个给定的字符串,而不是数字 (可别和C语言里的 switch.case混淆)。 lshell通过计算字符串string 的值,将其结果依次和分支表 达式exp-1、exp-2等进行比较 ,直到找到一个匹配的表达式 为止,如果找到了匹配项则执 行它下面的命令直到遇到一对 分号(;)为止。 l在case表达式中也可以使用 shell的通配符(“*”、“? ”、“ ”)。通常用“*” 作为case命令的最后表达式以 便使在前面找不到任何相应的 匹配项时执行“其他命令行” 的命令。 Exp8.sh 分支语句练习 #!/bin/bash if $# -lt 1 then echo “need 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 - clear echo “-MENU-“ echo echo “1.Find files modified in last 24 hours“ echo “2.The free disk space“ echo “3.Space 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 2.3 控制结构for循环 格式 for 变量名 in 列表 do 命令 done 当变量值在列表里,for循环即 执行 一次所有命令,使用变量名访 问列 表中取值。 嵌套循环可以将一个for循环嵌 在 另一个for循环里 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 “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/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 names.txt 生成names.txt While循环的C语言形式 #!/bin/bash i=1 while($i100) do if($i%4=0) then echo $i fi i=$($i+1) done Exp9.sh while 循环练习 #!/

温馨提示

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

评论

0/150

提交评论