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

    bash基础编程

    前言:条件测试语法有两种书写模式,一种时[expression] ,另外一种是[[exprssion]] ,为了在书写条件测试的过程中,不让大家将两种格式互相混淆,那么在这里只讲一种格式,也就是第一种格式[]。因为第一种格式在书写过程中基本不会出错,而第二种格式经常会写错,且第一种格式在很多服务的启动脚本中经常看到,因此应用广。              有兴趣可以看看《shell脚本编辑大全》

    条件测试的状态返回i值和书写格式

    执行命令,利用状态返回值来判断

    0  :成功

    1-255:失败

    测试表达式

    test expaession

    [ expression ]   常用

    [[ expression ]]

    bash的测试类型

    数值测试

    字符串测试

    文件测试

    数值测试:数值比较

    -eq : 是否等于  [$numl  -eq   $num2]   ===euqual

    -ne : 是否不等于[$numl -ne $num2]  ==== no  euqual

    -gt :  是否大于 [$numl  -gt  $numl2]====greater

    -ge : 是否大于等于[$numl -ge  $numl2] ===greater  euqual

    -lt : 是否小于  [$numl1  -lt   $numl2]====less than

    -le  : 是否小于等于 [$numl1  -le  $numl2]

    字符串测试:字符比较

    == :是否等于

    >  : 是否大于

    <   :  是否小于

    != :是否不等于

    =~左侧字符串是否能够被右侧的pattern所在区配

    -z "string"  :   判断指定的字符串是否为空,空则为真,不空则为假

    -n  "string" :   判断指定的字符串是否为不空,不空则为真,空为假

    注意:

    (1) 字符串要加引号

    (2) 在做字符串的比较时候,格式如下:

    if [" $VARIABLE" = = "$SVARIABLE"  -a   "$SVARIBLE" = = "CPU" ] ;then 需要在运算符号两边有空格,并且使用双引号将字符串包裹起来,这样即使是变量也可以替换。

    文件测试

    存在性测试

    -a file

    -e file

    文件的存在性测试,存在为真,不存在文假

    文件类型测试

         -b  file  :是否存在并且为块设备文件

         -c  file  :是否存在并且为字符设备文件

         -d   file  :是否存在并且为目录文件

         -f   file  :是否存在并且为普通文件

         -h/l  file  :是否存在并且为符号链接文件

          -p  file  :是否存在并且为为管道文件

          -s   file :是否存在并且为套接字文件

    文件权限测试

         -r file   :是否存在并且为当前用户可读

        -w  file :是否存在并且为当前用户可写

        -x   file  : 是否存在并且为当前用户可执行

    特殊权限测试

    -u   file  :是否存在并且为拥有SUID 权限

    -g  file :  是否存在并且为拥有GUID权限

    -k  file  : 是否存在并且为拥有Stiicky权限

    文件是否有内容

     -s   file   :  是否存在并且有内容

    文件是否为空,为空则为真

    -z  $VARIALE

    文间的时间差测试

    -N file : 文件自从上此被读取后是否被修改过

     

    从属关系测试

    -O file :当前用户是否为文件的属主

    -G file : 当前用户是否属于文件的属组

    双目测试 

    file -ef file2 :是否为同一件文件系统上的指向同一iNode的硬链接

    file -nt flie2:file1  是否新于file2

    file  -ot file2:file1  是否旧于file2

    组合条件测试

    逻辑运算

    第一种方式

          COMMAND1 $$ COMMAND2

          COMMAND1 || COMMAND2

       ! COMMAND

       [-O file ]  & & [-r file]

    第二种方式

        [expression  -a  expression]  : 与运算

        [expession  -O   expression]  :  或运算

        !  expression

    例如: [- O file -a -x file ]

    脚本的状态返回值

    1 默认是脚本执行的最后一条命令的返回值

    2 自定义状态退出状态码

     exit  [n] : n为自己指定的状态码

    注意:shell 进程遇到exit时候,会立即终止,

    整个脚本执行结束

    向脚本传递参数

      位置参数变量

    在脚本文件中的引用方式:

    $1 , $2........表示给脚本传递的第一个参数和第二个位置参数

    到了两位数的时候用${10},${11} 因为$11会产生歧义。

    轮替  shift  [n]  :位置参数轮替

     

    特殊变量

    $o :脚本文件路径名称本身

    $# :保存了脚本参数的个数

    $* :所有参数

    $@ :所有参数

    过程式编程的代码执行顺序

    顺序执行: 逐条执行

    选择执行: 代码存在一个或多个分支,只执行其中一个

    代码有一个分支:   条件满足时才会执行

     两个或以上的分支:只会执行其中一个满足条件的分支

    循环执行 : 代码片段(循环体)要执行0,1 或多个来回

    选择执行: 单分支的if语句

  • 相关阅读:
    NOIP模拟题——小L的珍珠挂饰
    NOIP模拟题——小L的牛栏
    NOIP模拟题——小L的二叉树
    NOIP模拟题——愉快的logo设计
    NOIP模拟题——复制&粘贴2
    NOIP模拟题——Landscaping
    poj3264
    RMQ_ST算法
    Count Colour_poj2777(线段树+位)
    I Hate It(hdu1754)(线段树区间最大值)
  • 原文地址:https://www.cnblogs.com/liu1026/p/7354725.html
Copyright © 2011-2022 走看看