zoukankan      html  css  js  c++  java
  • Shell脚本学习笔记(四)流程控制

    流程控制


    Bash Shell中,流程控制命令有两大类:选择和循环。属于选择的有:if,case;属于循环的有:for,while,until;命令select既属于选择,也属于循环。不管是哪一种,均需进行条件测试,再根据测试结果,决定程序流程进行的方向。

    Bash Shell Script可由许多命令组成,每一个命令执行后,都会传回一个结束状态值,成功返回0否则非0.Bash内置变量$?用来存储每个命令执行后传回的状态值。

    if条件判断

    完整的语法结构是

    if 条件测试1; then
    命令区域1
    elif 条件测试2
    ; then
    命令区域2
    else
    命令区域3
    fi


    其中elif可以多行数量不限,else只能有一行,也可以没有

    条件测试可以有多种形式,测试结果是真是假,就看其传回的值是否为0.条件测试的写法有10种
    1 执行某一个命令的结果:可以包含管道命令,其结果状态为最后一个命令执行的结果
    2 传回某一命令执行结果的相反值:!命令
    3 使用复合命令:((算式))  运算结果为0返回假,不为0返回真
    4 使用Bash关键词'[['、']]'组成的式子:[[判断式]]  传回0为真,非0为假
    5 使用内置命令:test 判断式  真值传回0,假值传回1  转义
    6 使用内置命令:[判断式] 与test相同
    7 使用-a、-o进行逻辑组合  a且o或
    8 命令1&&命令2
    9 命令1||命令2
    10 &&和||复用

    关于文件属性的判断式

    关于字符串的条件判断式

    关于算式的条件判断式

    Case

    case 待测项 in
    样式串行1
    ) 命令区域1;;
    样式串行2
    ) 命令区域2;;
    样式串行3
    ) 命令区域3;;
    ...
    *
    ) 命令区域;;
    esac

    样式串中有好几个字符串时,要用|隔开

    样式串行可写成'(样式串行)',或者'样式串行)',后者更常见。

     

    For

    for 变量 in 串行

    do

    命令区域

    done

     

    串行是一些字符串的组合,彼此用$IFS所定义的分割字符(如空格符)隔开,这些字符串称为字段。

     

    in 串行 可以不写,等同于

    for 变量 in $@

    do

        命令区域

    done

    $@代表命令行所有参数

     

    另一种for格式

    for ((初始条件; 终止条件; 异动项))
    do
    命令区域
    done

     

    While

    while 条件测试
    do
    命令区域
    done

     

    Until

    until 条件测试
    do
    命令区域
    done

     

    Select命令

    select 选项变量 in 串行
    do
    命令区域
    done

     

    select命令建立一个列表。列表的选项,即串行中的各个字段。列表提示符号由Bash的内置变量PS3来定义,默认值#?。只要改变PS3的值,用户可以自定义提示符号。select会给各个选项一个编号,从1开始递增。当使用者键入编号,选择其中某一个选项时,该选项的内容就设置给选项变量,而键入的编号值则放入REPLY变量中。

    若要结束select列表,可在命令区域输入break命令,或按ctrl-D结束。

     

    breakcontinue

  • 相关阅读:
    Linux- 恢复.swp文件
    codeforces contest 1111
    bzoj2589【 Spoj 10707】 Count on a tree II
    20190129模拟题
    loj6070【山东集训第一轮Day4】基因
    bzoj4784【zjoi2017】仙人掌
    bzoj4520【cqoi2016】K远点对
    【学习笔记】BEST定理
    bzoj2441【中山市选】小W的问题
    bzoj3203【sdoi2013】保护出题人
  • 原文地址:https://www.cnblogs.com/njucslzh/p/1982572.html
Copyright © 2011-2022 走看看