美文网首页
7.逻辑结构

7.逻辑结构

作者: 互联网中的一个咸鱼 | 来源:发表于2019-08-06 09:36 被阅读0次

    一、if 判断

    if ... then ... fi

    单层
    如果 是真的 那么 ...

    if [ 条件判断式 ];then
        当条件判断式成立时,可以进行的命令。
    fi   # 结束这个判断语句结构
    

    if ... then ... else....fi

    多重、复杂条件判断式
    如果 是真的 那么 ... 否则 ...

    一颗红心,两手准备
    
    if [ 条件判断式 ]; then
        当条件判断式成立时,可以进行的指令工作内容;
    else
        当条件判断式不成立时,可以进行的指令工作内容;
    fi
    

    if ... elif ... elif ... else ... fi

    多个条件判断 (if ... elif ... elif ... else) 分多种不同情况执行

    if [ 条件判断式一 ]; then
        当条件判断式一成立时,可以进行的指令工作内容;
    elif [ 条件判断式二 ]; then
        当条件判断式二成立时,可以进行的指令工作内容;
    else
        当条件判断式一与二均不成立时,可以进行的指令工作内容;
    fi
    

    注意
    elif 也是个判断式,因此出现 elif 后面都要接 then 来处理!但是 else 已经是最后的没有成立的结果了, 所以 else 后面并没有 then

    二、利用case ...esca判断

    基本语法

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

    模式还可以是多个

    #!/bin/bash
    cat << EOF
    m|M) show memory usages;
    d|D) show disk usages;
    q|Q) quit
    EOF
    read -p "Your choice" choice
    case $choice in
    m|M)
            free -m
            ;;
    d|D)
            df -h
            ;;
    q|Q)
            exit
            ;;
    *)
            eco "Invalid input"
            ;;
    esac
    

    三、while...do...done(不确定的循环)

    while [ condition ]  ==>中括号内的状态就是判断式
    do            ==> do 是循环的开始!
        代码段
        代码段
    done          ==> done 是循环的结束
    

    四、 for do done (固定的循环)

    for var in con1 con2 con3 ...
    do
        程序段
    done
    
    

    var 是变量名
    con1 con2 con3 是常量,就是具体的数据
    也可以是一个已经被赋值的变量, 写法 [图片上传失败...(image-4ede60-1565009376150)]

    {val2}

    以上面的例子来说,这个 $var 的变量内容在循环工作时:

    1. 第一次循环时, $var 的内容为 con1 ;
    2. 第二次循环时, $var 的内容为 con2 ;
    3. 第三次循环时, $var 的内容为 con3 ;
    4. ....

    数值运算

    ➜  ~ n=1
    ➜  ~ let n++
    ➜  ~ echo $n
    2
    ➜  ~ (( n++ ))
    ➜  ~ echo $n
    3
    ➜  ~ a=2
    ➜  ~ b=3
    ➜  ~ let f=a+b
    ➜  ~ echo $n
    3
    ➜  ~ echo $f
    5
    ➜  ~ let f = a + b     ==> 错误
    zsh: bad math expression: operand expected at `='
    ➜  ~ let "f = a + b"
    ➜  ~ echo $f
    5
    
    

    for 循环中 变量的取值方式

    a. 从一组字符串中取值

    for  var     in    one    two    three   four   five 
    do
        echo    "****************************"
        echo   '$var   is '    $var
    done
    
    

    b. 从位置变量中取值

    for    var
    do
        echo  '-----------------------------'
        echo   '$var   is '    $var
    done
    
    

    c. 从累计变化的格式中取值

    #!/bin/bash 
    
    for    ((var=1;var<=10;var++))
    do
        echo   "------------------------" 
        echo   '$var   is '    $var
    done
    
    

    d. 从命令结果中取值

    #!/bin/bash
    for   var   in   $(cat    file.txt)
    do
        echo  " ------------------------" 
        echo   '$var   is '    $var
    done
    
    

    六、break 和 continue

    相关文章

      网友评论

          本文标题:7.逻辑结构

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