zoukankan      html  css  js  c++  java
  • 流程控制语句

    1、条件语句

      对于先做判断在选择路径的情况,使用分支结构,这需要用到条件语句。条件语句用于根据指定的条件来选择执行程序,实现程序的分支结构。Shell提供了2个条件语句:if和case。

    1、if语句

      if语句通过判定条件表达式做出选择。大多数情况下,可以使用test命令来对条件进行测试,比如可以比较字符串、判断文件是否存在。例如

    if test $[vall] -eq $[val2]
    

      实际应用中通常用方括号来代替test.

     根据语法格式,if语句可分为以下三种类型

    (1)if...else

    if [ 条件表达式 ]
    then 
      语句序列  
    fi
    

      这是最简单的if机构,如果条件表达式结果返回true,"then"后面的语句将会执行,否则不会执行任何语句。最后必须以fi语句结尾来闭合if语句。下面给出一个简单的例子。

    #!/bin/bash
    a=1
    b=2
    if [ $a -lt $b ]
    then 
    	echo "a<b"
    fi

    (2)if...else...fi

       语法格式如下:

    if [ 条件表达式 ]
    then 
        语句序列1
    else
        语句序列2
    fi
    

      如果条件表达式返回true,那么then后面的语句将会执行,否则执行"else”后面的语句。下面给出一个简单的例子

    #!/bin/bash
    a=2
    b=1
    if [ $a -lt $b ]
    then 
    	echo "a<b"
    else
    	echo "a!<b"
    fi
    

      

    (2)if...elif...fi

      这种结构可以对多个条件进行判断,语法格式如下:

    if [ 条件表达式1]
    then 
        语句序列1
    elif [ 条件表达式2]
    then
        语句序列2
    elif [ 条件表达式3]
    then
        语句序列3
    ....
        else
        语句序列n
    fi
    

      哪一个表达式为true,就执行哪个表达式后面的语句;如果都为false,那么执行else后面的语句。下面给出一个示例

    #!/bin/bash
    a=2
    b=1
    if [ $a == $b ]
    then 
        echo "a=b"
    elif [ $a -gt $b ]
    then
        echo "a>b"
    elif [ $a -lt $b ]
    then
        echo "a<b"
    else
        echo "input error"
    fi

    2、case语句

      这是一种多选择结构,与其他语言中的“switch...case"语句类似。case语句匹配一个值或一个模式,如果匹配成功,执行相匹配的命令。如果存在很多条件,那么可以使用case语句来代替if语句。case语句的语法格式如下:

    case 值 in
    模式1)
    语句序列1
    ;;
    模式2)
    语句序列2
    ;;
    ...
    模式n)
    语句序列n
    ;;
    *)
        其他语句序列
    esac
    

      值可以是变量或常数。模式可以包含多个值,使用”|“将各个值分开,只要值匹配模式中的一个值即可视为匹配。例如”3|5“表示匹配3或5均可。

      Shell将值逐一同各个模式进行比较,当发现匹配某一模式后,就执行该模式后面的语句序列。直到遇见两个分号;;为止。;;与其他语言中的break类似,用于终止语句执行,跳到整个case结构的最后。*表示任意模式,如果不能撇陪任何模式,则执行*后面的语句序列。由于case语句依次检查匹配模式,”*)“应当放在最后。

      下面给出一个示例,显示当前登录Linux的用户

    #!/bin/bash
    case $USER in
    li)
    echo "欢迎用户登录"
    ;;
    root)
    echo "超级管理员"
    echo "欢迎登陆"
    ;;
    *)
    echo "欢迎 $USER!";
    esac
    

      

    2、循环结构

      Shell提供的循环结构有3种,分别是while、until和for。

    1、循环语句while

      while循环用于不断执行一系列命令,直到测试条件为假。其语法格式如下:

    while 测试条件
    do
        语句序列
    done
    

      命令执行完,控制返回循环顶部,然后在做条件测试,直到测试条件为假时才终止while语句的执行。只要测试条件为真,do和done之间就一直会进行。

      下面给出一个实例,用while循环求1~100的总和。

    #!/bin/bash
    total=0
    num=0
    while [ $num -le 100 ]
    do 
    	total=`expr $total + $num`
    	num=`expr $num + 1`
    done 
    echo "结果等于 $total"
    

      

    2、循环语句until

      until循环用来执行一系列命令,直到所指定的条件为真时才终止循环,基本格式如下:

    until 测试条件
    do
        语句序列
    done
    

      先进行条件测试,如果返回值为假,则继续返回循环体内的语句,否则跳出循环。

      until循环于while循环在处理方式上刚好相反,一般while循环优于until循环,但在极少数的情况下,until循环更加有用。

      同样,用until循环求1~100的总和。

    #!/bin/bash
    total=0
    num=0
    until [ $num -gt 100 ]
    do 
    	total=`expr $total + $num`
    	num=`expr $num + 1`
    done 
    echo "结果等于 $total"
    

      

    3、循环语句for

      until和while循环通常用于条件性循环,遇到特定的条件才会终止循环。而for循环适用于明确知道重复执行次数的情况,其语法格式如下:

    for 变量 [in 列表]
    do 
        语句序列
    done
    

      其中变量是指要在循环内部用来匹配列表当中的对象,列表是在for循环的内部要操作的对象,可以是一组值组成的序列,每个值通过空格分隔,每循环一次,就将列表中的下一个值赋给变量。"in 列表"是可选的,如果不用它,for循环将自动使用命令行的位置参数。

    例如下面脚本按顺序输出列表中的数字。

    for val in 1 2 3 4 5 6 7 
    do 
    echo $val
    done
    

      

    下面的脚本显示主目录下的文件

    #!/bin/bash
    for FILE in $HOME/*.*
    do 
       echo $FILE
    done
    

      

    4、其他循环语句

      在循环过程中,有时候需要在未达到循环条件时强制跳出循环,像大多数编程语言一样,Shell也可以使用break和continue来跳出循环。

      break语句用来终止一个重复执行的循环。这种循环可以是for、until、或者while语句构成的循环。其语法格式如下:

    break [n]
    

      其中n表示要跳出的几层循环,默认值是1,表示只跳出一层循环。

      下面是一个嵌套循环的例子,如果var1等于4,并且var2等于2,就跳出循环。

    #!/bin/bash
    for var1 in 1 4 7
    do 
       for var2 in 2 5 8
    do 
      if [ $var1 == 4 -a $var2 == 2 ]
       then 
    	break 2
       else
    	echo "第一层: $var1"
    	echo "第二层: $var2"
      fi
    done
    done
    

      

    continue 语句跳过循环体中位于它后面的语句,回到本层循环的开头,并进行下一次的循环。其语法格式如下:

    continue [n]
    

      其中n表示从包含continue语句的最内层循环体向外调到第n层循环。

    exit用来退出一个Shell程序,并设置退出值。其语法格式如下:

    exit [n]
    

      其中n是设定的退出值。如果未给出n值,则退出值为最后一个命令的执行状态。

  • 相关阅读:
    散列
    HDOJ 1005
    ASP.NET会话(Session)模式
    【转】SQLServer 2005新功能,一些性能方面问题,sql 经典语句
    使用委托在用户自定义控件中实现事件响应
    Web.config详解 [转]
    每个分类取最新的几条的SQL实现
    c++中const与函数一起用的时候需要注意什么?
    ASP.NET中定制自己的委托和事件参数类
    asp.net repeat嵌套
  • 原文地址:https://www.cnblogs.com/noticeable/p/8862086.html
Copyright © 2011-2022 走看看