zoukankan      html  css  js  c++  java
  • Shell编程2

    控制结构语句

    顺序结构

    顺序结构是指Shell语句的执行是按语句的顺序逐条执行的。
    由于简单,此结构不写例题。

    选择结构

    if-then-elif-else-fi 
    #用来执行选择结构
    

    常见的格式

    if expression
      then
      then -command
    fi
    
    if expression
       then
       command-list
    else
       command-list
     fi
    
    if expressionl
       then
       then1-commands
    elif expressionl
        then
        then1-commands
     .....
    else
       else-command
    fi
    

    对于这三种格式,我们通过具体代码来看看其用法。
    在此之前我们先了解一下,如何判断表达式的值。

    test [expression] #检测一个表达式并返回true或者false
    [[expression]] #检测一个表达式并返回true或者false
    

    注意操作数和操作符之间至少保留一个空格。
    表达式的三种比较
    字符串比较

    字符串比较 结果
    string1 = string2 如果两个字符串相同则结果为真
    string1 != string2 如果两个字符串不同则结果为真
    -n string 如果字符串不为空则结果为真
    -z string 如果字符串为空则结果为真

    算数比较

    算术比较 结果
    expression1 -eq expression2 如果两个表达式相等则结果为真
    expression1 -ne expression2 如果两个表达式不等则结果为真
    expression1 -gt expression2 如果expression1大于expression2则结果为真
    expression1 -ge expression2 如果expression1大于或等于expression2则结果为真
    expression1 -lt expression2 如果expression1小于expression2则结果为真
    expression1 -le expression2 如果expression1小于或等于expression2则结果为真
    ! expression 如果表达式为假则结果为真,反之亦然

    文件测试

    文件条件测试 结果
    -d file 如果文件是一个目录则结果为真
    -f file 如果文件是一个普通文件则结果为真
    -e file 如果文件存在则结果为真
    -g file 如果文件的SGID位被设置则结果为真
    -r file 如果文件可读则结果为真
    -s file 如果文件的长度不为0则结果为真
    -u file 如果文件的SUID位被设置则结果为真
    -w file 如果文件条件可写则结果为真
    -x file 如果条件可执行则结果为真

    在了解了这些知识的情况下,我们可以看三个例题
    例题1
    利用内部变量和位置参数编写一个名为Shell211的简单删除程序,如果删除的文件名位a,则在终端输入的命令位 Shell211 a

    循环结构

    for

    for variable [in argument-list]
    do
    command -list
    done
    

    解释:argument-list 中的词被注意赋值给variable,然后执行一次command-list中的命令,这种结构通常被称作循环体。
    例如:
    在这里插入图片描述

    • IFS
      IFS是“内部区域分割符”,他是一个内置环境变量,存储着默认的文本分隔符,在默认的情况下分隔符是空格符,制表符以及换行符。
      在这里插入图片描述
      在这里插入图片描述
      while
      由for循环的例题我们知道,它特别适合对一系列字符串进行处理,但进行执行特定次数的情况特别难。一次我们用while循环
    while expression
    do
      command-list
    done
    

    在这里插入图片描述
    until

    until expression
    do
    command-list
    done
    

    until与while类似但含义不同,until中当expression中的值位假时执行循环体。

    case
    case语句提供了一种同嵌套的if语句类似的多路跳转功能,但case语句提供的结构可读性更好。

    其他几个常用的语句

    • break
      打断循环体,执行done后面的语句。永远的终止循环
    • continue
      跳转后done命令后再次判断循环条件是否满足循环,如果满足则开始一次新的循环
    • exit
    exit n
    
    退出码 说明
    126 文件不可以执行
    127 命令未找到
    128及其以上 发现一个信号
    • printf
      此命令用于格式化输出,类似与c语言。
    printf "format string" parameter1 parameter2.....
    

    数值处理

    在Linux系统中Bash变量的值是以字符串格式来存储的。如果需要进行算数和逻辑运算,必须先将字符串转换为整数,得到运算结果后在转换回字符串,以便正确保存在Shell变量中。

    • let
      用来计算算术表达式的值。
    let express-list
    

    如果最后的表达式取值为0,let命令返回1,否则返回0。
    在这里插入图片描述

    • Shell拓展$((expression))
      在这里插入图片描述
      在这里插入图片描述
    • expr命令
      将它的参数当作一个表达式来求值。
  • 相关阅读:
    ubuntu 解决“无法获得锁 /var/lib/dpkg/lock -open (11:资源暂时不可用)”的方法
    解决VMware安装ubuntu16.04后无法全屏的问题
    力推:无限制下载神器aria2
    使用Pangolon在同一副图中,画出两个轨迹,比较误差
    Pangolin中opengl的混合(gl_blend)
    Ubuntu 16.04: How to install OpenCV
    ubuntu16.04下安装Eigen
    ubuntu16.04下安装Sophus
    svn删除账户信息
    javaweb乱码(tomcat服务器)
  • 原文地址:https://www.cnblogs.com/gaochunhui/p/11700613.html
Copyright © 2011-2022 走看看