zoukankan      html  css  js  c++  java
  • shell条件判断式

    条件判断式

    只要讲到『程序』的话,那么条件判断式,亦即是『 if then 』这种判别式肯定一定要学习的! 因为很多时候,我们都必须要依据某些数据来判断程序该如何进行。

    if .... then

    这个 if .... then 是最常见的条件判断式了~简单的说,就是当符合某个条件判断的时候, 就予以进行某项工作就是了。这个 if ... then 的判断还有多层次的情况!我们分别介绍如下:

     

    单层、简单条件判断式

    如果你只有一个判断式要进行,那么我们可以简单的这样看:

    if [ 条件判断式 ]; then
        当条件判断式成立时,可以进行的命令工作内容;
    fi   <==将 if 反过来写,就成为 fi 啦!结束 if 之意!

    例子:

    [root@www scripts]# cp sh06.sh sh06-2.sh  <==用改的比较快!
    [root@www scripts]# vi sh06-2.sh
    #!/bin/bash
    # Program:
    #       This program shows the user's choice
    # History:
    # 2005/08/25    VBird   First release
    PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
    export PATH
    
    read -p "Please input (Y/N): " yn
    
    if [ "$yn" == "Y" ] || [ "$yn" == "y" ]; then
        echo "OK, continue"
        exit 0
    fi
    if [ "$yn" == "N" ] || [ "$yn" == "n" ]; then
        echo "Oh, interrupt!"
        exit 0
    fi
    echo "I don't know what your choice is" && exit 0

    多重、复杂条件判断式

    简单语法

    # 一个条件判断,分成功进行与失败进行 (else)
    if [ 条件判断式 ]; then
        当条件判断式成立时,可以进行的命令工作内容;
    else
        当条件判断式不成立时,可以进行的命令工作内容;
    fi

    更复杂的情况,则可以使用这个语法:

    # 多个条件判断 (if ... elif ... elif ... else) 分多种不同情况运行
    if [ 条件判断式一 ]; then
        当条件判断式一成立时,可以进行的命令工作内容;
    elif [ 条件判断式二 ]; then
        当条件判断式二成立时,可以进行的命令工作内容;
    else
        当条件判断式一与二均不成立时,可以进行的命令工作内容;
    fi

    例子

    [root@www scripts]# cp sh06-2.sh sh06-3.sh
    [root@www scripts]# vi sh06-3.sh
    #!/bin/bash
    # Program:
    #       This program shows the user's choice
    # History:
    # 2005/08/25    VBird   First release
    PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
    export PATH
    
    read -p "Please input (Y/N): " yn
    
    if [ "$yn" == "Y" ] || [ "$yn" == "y" ]; then
        echo "OK, continue"
    elif [ "$yn" == "N" ] || [ "$yn" == "n" ]; then
        echo "Oh, interrupt!"
    else
        echo "I don't know what your choice is"
    fi

     

    利用 case ..... esac 判断

    他的语法如下:

    case  $变量名称 in   <==关键字为 case ,还有变量前有钱字号
      "第一个变量内容")   <==每个变量内容建议用双引号括起来,关键字则为小括号 )
        程序段
        ;;            <==每个类别结尾使用两个连续的分号来处理!
      "第二个变量内容")
        程序段
        ;;
      *)                  <==最后一个变量内容都会用 * 来代表所有其他值
        不包含第一个变量内容与第二个变量内容的其他程序运行段
        exit 1
        ;;
    esac                  <==最终的 case 结尾!『反过来写』思考一下!

    例子

    [root@www scripts]# vi sh09-2.sh
    #!/bin/bash
    # Program:
    #     Show "Hello" from $1.... by using case .... esac
    # History:
    # 2005/08/29    VBird    First release
    PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
    export PATH
    
    case $1 in
      "hello")
        echo "Hello, how are you ?"
        ;;
      "")
        echo "You MUST input parameters, ex> {$0 someword}"
        ;;
      *)   # 其实就相当於万用字节,0~无穷多个任意字节之意!
        echo "Usage $0 {hello}"
        ;;
    esac

    转自 http://vbird.dic.ksu.edu.tw/linux_basic/0340bashshell-scripts_4.php#sh06

  • 相关阅读:
    ODAC(V9.5.15) 学习笔记(六)TOraSQL、TOraTable和TOraStoredProc
    ODAC(V9.5.15) 学习笔记(五)TSmartQuery
    ODAC(V9.5.15) 学习笔记(四)TOraDataSet
    ODAC(V9.5.15) 学习笔记(四)TCustomDADataSet(5)
    ODAC(V9.5.15) 学习笔记(四)TCustomDADataSet(4)
    Cesium原理篇:7最长的一帧之Entity(下)
    Cesium原理篇:7最长的一帧之Entity(上)
    Cesium原理篇:6 Render模块(6: Instance实例化)
    Cesium原理篇:6 Render模块(5: VAO&RenderState&Command)
    Cesium原理篇:6 Render模块(4: FBO)
  • 原文地址:https://www.cnblogs.com/ggjucheng/p/2748626.html
Copyright © 2011-2022 走看看