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

  • 相关阅读:
    SD卡测试
    测试人员可能会遇到的问题
    HDU 1024 Max Sum Plus Plus
    HDU 1176 免费馅饼
    HDU 1257 最少拦截系统
    HDU 1087 Super Jumping! Jumping! Jumping!
    poj 1328 Radar Installation
    poj 1753 Flip Game
    HDU 1003 Max Sum
    HDU 5592 ZYB's Premutation(BestCoder Round #65 C)
  • 原文地址:https://www.cnblogs.com/njucslzh/p/1982572.html
Copyright © 2011-2022 走看看