zoukankan      html  css  js  c++  java
  • 3.Linux Shell流程控制

    1.if/else结构

    if condition
    then
        statements
    elif condition
    then
        statements
    else
        statements
    fi

    2.条件

    与C语言不同的是,条件(condition)实际上是语句列表,而不是一般的布尔表达式。

    按照惯例,函数以及命令的退出状态用0表示成功,非0表示失败。当退出状态遭遇if/else时,我们就能检验条件(condition)的执行结果,并根据执行结果进行相应处理。可以写出下面的伪代码:

    if command #运行成功
    then
        #欢呼吧
    else
        #一定是哪里有问题
    fi

    3.退出状态的逻辑操作

    Shell语法的神奇之处在于,它允许你在逻辑上操作退出状态。常见的逻辑操作有NOT,AND与OR。

    1.NOT,使用!

    if ! condition        # 条件判定失败
    then
        statements
    fi

    2.AND,使用&&

    if condition1 && condition2        #首先执行第一个条件判断,如果成功再执行第二个,如果第二个也成功,则整个条件判断成功
    then
        statements
    fi

    3.OR,使用||

    if condition1 || condition2        #只要有一个条件成功,整个条件判断就成功
    then
        statements
    fi

    4.条件测试

    if语句唯一可以测试的内容是退出状态,不能用于检测表达式的值。但是通过test命令,你可以将表达式值的测试与if语句连用。

    test命令介绍:

      1.使用方式:

      test Expression 或 [ Expression ]。用中括号做判断是,"["后和"]"前的空格是必须加的。

      2.描述:

      test命令平菇Expression参数,如果表达式值为True,test命令返回一个0退出值。否则,test命令返回一个非0退出值。如果没有参数,test命令也返回一个非0退出值。

    4.1.字符串比较

    操作符 含义
    str1 = str2   str1匹配str2
    str1 != str2 str1不匹配str2
    str1 < str2 str1小于str2
    str1 > str2 str1大于str2
    -n str1 str1为非null(长度大于0)
    -z str1 str1为null(长度为0)

    4.2文件属性检查

    操作符 含义
    -b file   file为块设备文件
    -c file file为字符设备文件
    -d file file为目录
    -e file file存在
    -f file file为一般文件
    -g file file有设置它的setgid位
    -h file file为符号连接
    -L file 同-h
    -p file file为管道
    -r file file可读
    -S file file为套接字
    -s file file非空
    -u file file有设置它的setuid位
    -w file file可写
    -x file file可执行,如果是目录,则file可被查找
    -O file 你是file的所有者
    -G file file的组ID匹配你的ID
    file1 -nt file2 file1比file2新
    file1 -ot file2 file1比file2旧

    5.case语句

    语法如下:

    case expression in
    pattern1)
        statements;;
    pattern2)
        statements;;
    pattern3)
        statements;;
    ...
    esac

    模式匹配按照顺序依次执行,直到匹配上为止。

    6.循环控制

    for循环

    for name [in list]        #遍历list中的所有对象
    do
    ...
    end

    while循环

    while condition
    do
        statements
    done

    until循环

    until condition    #当condition满足条件时,退出循环
    do
        statements
    done

    跳出循环 break

    下一轮循环 continue

    7.循环实例:命令行参数的处理

    author=false
    list=false
    file=""

    while [ $# -gt 0 ]
    do
    case $1 in
    -f)  file=$2
        shift
        ;;
    -l)  list=true
        ;;
    -a)  author=true
        ;;
    --)  shift          #传统上,以--结束选项
        break
        ;;
    -*)  echo $0: $1: unrecognized option
        ;;
    *)  break
        ;;
    esac
    shift
    done

    在shell中,有getopt命令,可以简化处理:

    author=false
    list=false
    file=""
    
    while getopt alf: opt    #alf表示要处理-a -l -f,opt用于存储参数标志
    do
    case $opt in
    f) file=$OPTARG    #参数放在OPTARG变量中
        ;;
    l) list=true
        ;;
    a) author=true
        ;;    
    esac
    done

      

  • 相关阅读:
    Python如何编写一个带命令行参数的程序
    软件工程第二次作业----(1)补交
    软件工程第二次作业----
    2017软件工程第一次作业
    2017软件工程第三次作业--功能测试
    2017软件工程第三次作业--效能分析
    每周例行报告
    2017软件工程第二次作业(一)
    2017软件工程第二次作业(二)
    2017软件工程第一次作业
  • 原文地址:https://www.cnblogs.com/jason886/p/7107633.html
Copyright © 2011-2022 走看看