美文网首页
shell 流程控制

shell 流程控制

作者: 碎玉长青 | 来源:发表于2018-01-03 13:14 被阅读0次

    条件判断

    if 单支流程控制

    语法:

    if   [ 条件 ]
    then
          指令
    fi      #结束语句
    

    双分支 if 语句

    语法

    if  [ 条件 ]
          then
              指令二
          else
              指令二
           fi
    

    实例

    read -p "input name : "   username
    if [ "${username}" == "luban"  ]
    then
           echo "login  success"
     else 
            echo  "login  failed"
    fi
    

    多分支if

    语法

    if [ 条件1 ]
    then 
        指令1
    elif [ 条件2 ]
    then
        指令2
    else
        指令3
    fi
    

    实例

    #!/bin/bash
    # 多if语句的使用场景
    if [ "$1" == "start" ]
    then
       echo "服务启动中..."
    elif [ "$1" == "stop" ]
    then
       echo "服务关闭中..."
    elif [ "$1" == "restart" ]
    then
       echo "服务重启中..."
    else
       echo "$0 脚本的使用方式: $0 [ start | stop | restart ]"
    fi
    

    case 语句

    语法

    case  变量名  in
            值1)
                指令1
                 ;;
            值2)
                 指令2
                 ;;
            值3)   
                 指令3
                 ;;
            exac
    

    实例

    read -p "input name : " username
    case "${username}"  in
            "luban")
                  echo  "success"
                   ;;
             "qihao")
                   echo  "success"
                   ;;
              *)   # 当前面条件都不符合,用* 匹配任意非分支的选择
                    echo "failed"
                    ;;
            exac
    

    循环

    for 循环

    语法

    for 值 in 列表
    do
       执行语句
    done
    

    注意:

    ”for” 循环总是接收 “in” 语句之后的某种类型的字列表
    执行次数和list列表中常数或字符串的个数相同,当循环的数量足够了,就自动退出
    对于固定次数的循环,可以通过seq命令来实现,就不需要变量的自增了
    

    实例(命令)

    #!/bin/bash
    #  遍历当前目录
    for file in $(ls)
    do
          echo "file name : ${file}"
    done
    

    实例(列表)

    #!/bin/bash
    num = $(seq 10)      # 生成一个数组从1~10
    for i in "${num}"
    do 
          echo  "${i}"
    done 
    

    while

    语法

    while 条件
    do
       执行语句
    done
    

    实例

    #!/bin/bash
    cou = 0
    while [ $cou  -le  5 ]
    do 
        echo  "${cou}"
        coun = $((cou + 1))
    done
    

    相关文章

      网友评论

          本文标题:shell 流程控制

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