zoukankan      html  css  js  c++  java
  • 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.

  • 相关阅读:
    LeetCode 326. Power of Three
    LeetCode 324. Wiggle Sort II
    LeetCode 322. Coin Change
    LeetCode 321. Create Maximum Number
    LeetCode 319. Bulb Switcher
    LeetCode 318. Maximum Product of Word Lengths
    LeetCode 310. Minimum Height Trees (DFS)
    个人站点大开发!--起始篇
    LeetCode 313. Super Ugly Number
    LeetCode 309. Best Time to Buy and Sell Stock with Cooldown (DP)
  • 原文地址:https://www.cnblogs.com/zhouby/p/10836392.html
Copyright © 2011-2022 走看看