• shell流程控制


      在任何编程语言中,都需要流程控制来改变程序的运行顺序。在shell脚本中,流程控制包括条件语句(if),循环语句(for,while),选择语句(case),下面将通过例子介绍一下各个语句的使用方法。

    一、if语句

    格式:if list; then list; [ elif list; then list; ] ... [ else list; ] fi

    1、单分支

    if 条件表达式; then

    命令

    fi

    例子:

    #!/bin/bash
    N=10
    if [ $N -gt 5 ]; then
      echo yes
    fi

    # bash test.sh
    yes

    2、双分支

    if 条件表达式; then
      命令
    else
      命令
    fi

    例子:

    #!/bin/bash
    N=10
    if [ $N -lt 5 ]; then
      echo yes
    else
      echo no
    fi

    # bash test.sh
    no

    3、多分支

    if 条件表达式; then
      命令
    elif 条件表达式; then
      命令
    else
      命令
    fi

    例子:

    #!/bin/bash
    N=$1
    if [ $N -eq 3 ]; then
      echo "eq 3"
    elif [ $N -eq 5 ]; then
      echo "eq 5"
    elif [ $N -eq 8 ]; then
      echo "eq 8"
    else
      echo "no"
    fi

    其中$1表示接受用户输入参数

    二、for语句

    格式:for name [ [ in [ word ... ] ] ; ] do list ; done

    for 变量名 in 取值列表; do
      命令
    done

    或者

      for 变量名 in 取值列表

      do

      命令

      done

    例子:

    #!/bin/bash
    for i in {1..3}; do
      echo $i
    done

    # bash test.sh
    1
    2
    3

    三、while语句

    条件为真就进入死循环;条件为假就退出循环

    格式:while list; do list; done

    例子:

    #!/bin/bash
    N=0
    while [ $N -lt 5 ]; do
      let N++
      echo $N
    done

    # bash test.sh
    1
    2
    3
    4
    5

    while语句可以用来编写在后台一直执行的脚本,直接将条件设置为while true

    四、break和continue的用法

    break 是终止循环。

    continue 是跳出当前循环

    例子1、在死循环中,满足条件则终止循环

    #!/bin/bash
    N=0
    while true; do
        let N++ if [ $N -eq 5 ]; then
                break
            fi
        echo $N
    done

    # bash test.sh
    1
    2
    3
    4

    例子2、满足条件跳出本次循环

    #!/bin/bash
    N=0
    while [ $N -lt 5 ]; do
        let N++ if [ $N -eq 3 ]; then
                continue
            fi
        echo $N
    done

    # bash test.sh
    1
    2
    4

    五、case语句

    case 语句一般用于选择性来执行对应部分块命令。

    case 模式名    in
    模式 1)
      命令
      ;;
    模式 2)
      命令
      ;;
    *)
      不符合以上模式执行的命令
    esac

    例子:

    #!/bin/bash
    case $1 in
    start)
      echo "start."
      ;;
    stop)
      echo "stop."
      ;;
    restart)
      echo "restart."
      ;;
    *)
      echo "Usage: $0 {start|stop|restart}"
    esac

    # bash test.sh
    Usage: test.sh {start|stop|restart}

    # bash test.sh start
    start.

    # bash test.sh stop
    stop.

    # bash test.sh restart
    restart.

  • 相关阅读:
    如何实现LRU缓存淘汰算法
    排序算法(上)
    MySQL为什么有时候会选错索引?
    mysql开启慢查询——wamp
    普通索引和唯一索引,应该如何选择
    php开发常用插件
    mysql批量添加大量测试数据
    .text()设置文本,.html()设置html, .val()设置值的使用
    ajax .load()方法
    jquery学习笔记一之window.onload与$(document).ready()区别
  • 原文地址:https://www.cnblogs.com/zhouby/p/10836392.html
Copyright © 2020-2023  润新知