美文网首页
三.条件判断式

三.条件判断式

作者: 银鳕鱼小王子 | 来源:发表于2019-02-25 20:43 被阅读0次

    最近在看《鸟哥的LINUX私房菜 基础学习篇》,目前看到了shell脚本这一章,打算在这里简单记录一下这一整章的学习过程和相关的知识点。

    参考资料:《鸟哥的LINUX私房菜 基础学习篇》第四版 第十二章
    实验环境: Ubuntu18.04


    在编写程序时,我们经常会用到条件判断式if,根据判断得到的结果分别执行不同的程序段。在shell中也经常会出现这种情况,所以shell脚本也提供了几种条件判断式供我们使用。

    1. if ... then

    if ... then是最常见的条件判断式,同时也类似于其他编程语言,可以利用if进行多层的嵌套。

    # if ... then 语法
    if [ 条件判断式 ]; then
        当条件判断式成立时,执行命令;
    fi #if的结束标志
    
    #分支判断: if...else...
    if [ 条件判断式 ]; then 
         当条件判断式成立时,执行命令;
    else
         当条件判断式不成立时,执行命令;
    fi 
    
    # 多层判断:if ... elif ... else ...
    if [ 条件判断式一 ]; then
         当条件判断式一成立时,执行命令;
    elif [ 条件判断式二]
         当条件判断式二成立时,执行命令;
    else
         当条件判断式一和二不成立时,执行命令;
    fi 
    

    注意:判断符[ ]使用时,两端各需要一个空格,详情可参考 二.善用判断式

    • 简单的示例
    #文件名:hello-2.sh
    
    #!/bin/bash
    # Program:
    #       Check $1 is equal to "hello"
    # History:
    # 2019/2/23     LaiFeng
    if [ "${1}" == "hello" ]; then
            echo "Hello, how are you?"
    elif [ "${1}" == "" ]; then
            echo "You must input parameter."
    else
            echo "The only parameter is "hell", ex->{${0} hello}"
    fi
    

    2. case ... esac

    case ... esac语法的功能类似于其他编程语言中的switch ... case,也可以用于条件判断。

    # case ... esac 语法
    case $变量名称 in
        "第一个变量内容")
          程序段
          ;;
        "第二个变量内容")
          程序段
          ;;
        *)  #用*代表所有其他值
          exit 1 #exit 1返回1,即$?=1
          ;;
    esac  #case倒着写
    
    • 简单的示例
    #文件名:hello-3.sh
    
    #!/bin/bash
    # Program:
    #       Show "hello" from $1...by using case..esac
    # History:
    # 2019/2/25     LaiFeng
    case ${1} in
            "hello")
                    echo "Hello, how are you?"
                    ;;
            "")
                    echo "You MUST input parameters, ex->{$0 someword}."
                    ;;
            *)
                    echo "Usage {$0 hello}"
                    ;;
    esac
    

    3.函数 function

    shell脚本也提供了自定义函数的功能,但函数的用法有所不同。
    注意:shell脚本中函数的定义一定要在程序的最前面(因为脚本是从上到下、由左向右执行的)

    • 简单的示例
    #文件名:show123_2.sh
    
    #!/bin/bash
    # Program:
    #       Use function to repeat information.
    # History
    # 2019/2/25     LaiFeng
    function printit(){
            echo -n "Your choice is " #-n 不换行
    }
    echo "This program will print you selection!"
    case $1 in
            "one")
                    printit;echo $1 | tr 'a-z' 'A-Z' #tr 'a-z' 'A-Z 将字母小写转成大写
                    ;;
            "two")
                    printit;echo $1 | tr 'a-z' 'A-Z'
                    ;;
            "three")
                    printit;echo $1 | tr 'a-z' 'A-Z'
                    ;;
    esac
    

    function不能在括号内直接传入参数,而是使用了内置变量来替代参数的作用,它的使用与shell脚本类似。$0代表函数名称 $1、$2...代表传入的参数

    • 简单的示例
    #文件名:show123_3.sh
    
    #!/bin/bash
    # Program:
    #       Use function to repeat information.
    # History
    # 2019/2/25     LaiFeng
    function printit(){
            echo "Your choice is $1"
    }
    echo "This program will print you selection!"
    case $1 in
            "one")
                    printit 1 #1为传入的参数的值
                    ;;
            "two")
                    printit 2 #2为传入的参数的值
                    ;;
            "three")
                    printit 3 #3为传入的参数的值
                    ;;
            *)
                    echo "Usage $0 {one|two|three}"
    esac
    

    想要了解更多关于shell脚本的内容?==>Linux shell脚本 :)

    相关文章

      网友评论

          本文标题:三.条件判断式

          本文链接:https://www.haomeiwen.com/subject/bdhnyqtx.html