0%

bash脚本编程思想和条件测试

bash脚本编程思想和条件测试

  • 数据类型

    • 字符型
    • 数值型
  • 算术运算

    1
    +,-,*,/,**
    • let VAR=expression
    • VAR=$[expression]
    • VAR=$((expression))
    • VAR=$(expr argu1 argu2)
  • 增强型赋值

    • +=,-=,*=,/=,%=
      
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      20
      21
      22
      23
      24
      25
      26
      27
      28
      29
      30
      31
      32
      33
      34

      - 要用let 描述, let i+=#

      - let VAR++

      - 条件测试

      - 判断需求是否满足,需要由测试机制来实现

      - 如何编写测试表达式以实现所需测试

      - 执行命令,并利用命令状态返回值来判断
      - 0成功
      - 1失败
      - 测试表达式
      - test expression
      - [ expression ]必须有空格
      - [[ expression ]]----关键字

      - 数值测试:数值比较

      - -eq : 是否等于 $num1 -eq $num2
      - -ne : 不等于
      - -gt :是否大于
      - -ge : 是否大于等于
      - -lt:是否小于
      - -le: 是否小于等于

      - 字符串设置:

      - ==:等值比较符号

      - ```
      >:是否大于,外边尽可能使用双括号
      - ``` <:是否小于
      1
      2
      3

      - ```
      != 是否不等于
      - -z"string":判断指定的字符串是否为空,空则为真 - -n"string":判断是否不为空。空为假 - =~:左侧能否被右边的pattern匹配,匹配左边的一部分字符 - Notes:和变量比两边加“ ”,防止空字符串
    • 文件测试

      • -a 或-e FILE,[-e FILE],是否存在
      • -b,是否存在且为块设备
      • -c,是否存在且为 字符设备文件
      • -d,目录文件
      • -f ,普通文件
      • -h ,符号连接文件
      • -p 命名管道文件
      • -S,套接字文件
      • 权限测试
        • -r,是否存在并且当前用户可读
        • -w,可写
        • -x,可执行
      • 特殊权限测试
        • -g,存在并且拥有suld权限
        • -u,是否存在且拥有sgld权限
        • -k,sticky权限
      • 内容测试
        • -s,是否为空,空为假
      • 时间戳测试
        • -N,上次读取后是否被修改过
      • 从属关系测试
        • -Q,当前文件是否是文件的属主
        • -G,当前用户胡是否为文件的属组
      • 双目测试
        • FILE1-ef FILE2 , FILE2和FILE2是否指向统一文件系统的相同Inode的硬链接
        • FILE1 -nt FILE2,FILE1是否新与FILE 2
        • FILE1 -ot FILE2,FILE1是否旧与FILE 2
      • 逻辑运算
        • && || !
        • [ EXPRESSION -a EXPRESSION ] 并且
        • [ expression -o expression ]
  • 脚本的状态返回值:最后执行的命令的返回值

    • 自定义状态返回值,exit[n],n自定义,返回n。shell遇到exit[n]立马终止