zoukankan      html  css  js  c++  java
  • 高级Bash脚本编程(二)

    高级Bash脚本编程(二)

    退出

    退出状态码

    1. 退出:exit 被用来结束一个脚本,它也返回一个值,并且这个值会传递给脚本的父进程,父进程会使用这个值做下一步的处理。
    2. 每个命令都会返回一个退出状态码,成功的命令返回 0,不成功的命令返回非零值,非零值通常都被解释成一个错误码。
    3. 练习截图

    反转条件用法

    ! 逻辑“非”操作符,将会反转命令或条件测试的结果,并且这会影响退出状态码。

    条件判断

    if/then 结构用来判断命令列表的退出状态码是否为 0,因为0表示成功,如果成功的话,这里应该那么就执行接下来的一个或多个命令。true返回的是0,false返回的是1

    • test3.sh

    多级比较

     #!/bin/bash
    
     if echo "Next *if* is part of the comparison for the first *if*."
       if [[ $comparison = "integer" ]]
         then (( a < b )) # (( 算数表达式 )), 用作算数运算
       else
         [[ $a < $b ]]
       fi
     then
      echo '$a is less than $b'
     fi
    
    • 注意: ((...))和let...如果运算结果为非0,该语句退出码为0,否则为1;[[...]]是作为一个单独的语句并且会返回一个退出码
      ,真返回0,假返回1.

    真假判断

    NULL和未初始化的变量、初始化为Null的变量,$false为假

    (( )) 结构

    • 扩展并计算一个算术表达式的值。如果表达式的结果为0,那么返回的退出状态码为1,或者是"假"。而一个非零值的表达式所返回的退出状态码将为0,或者是"true"。
    • (( ... ))结构可以用来计算并测试算术表达式的结果,退出状态将会与[ ... ]结构完全相反。

    文件测试操作符

    操作符

    说明

    • -e 文件存在
    • -a 文件存在,这个选项的效果与 -e 相同。但是它已经被“弃用”了,并且不鼓励使用。
    • -f 表示这个文件是一个一般文件(并不是目录或者设备文件)
    • -s 文件大小不为零
    • -d 表示这是一个目录
    • -b 表示这是一个块设备(软盘,光驱,等等)
    • -c 表示这是一个字符设备(键盘,modem,声卡,等等)
    • -p 这个文件是一个管道
    • -h 这是一个符号链接
    • -L 这是一个符号链接
    • -S 表示这是一个socket
    • -t 文件(描述符)被关联到一个终端上,这个测试选项一般被用来检测脚本中的stdin([ -t 0 ]) 或者 stdout([ -t 1 ])是否来自于一个终端
    • -r 文件是否具有可读权限(指的是正在运行这个测试命令的用户是否具有读权限)
    • -w 文件是否具有可写权限(指的是正在运行这个测试命令的用户是否具有写权限)
    • -x 文件是否具有可执行权限(指的是正在运行这个测试命令的用户是否具有可执行权限)
    • -g set-group-id(sgid)标记被设置到文件或目录上
    • -k 设置粘贴位
    • -O 判断你是否是文件的拥有者
    • -G 文件的group-id是否与你的相同
    • -N 从文件上一次被读取到现在为止, 文件是否被修改过
    • f1 -nt f2 文件f1比文件f2新
    • f1 -ot f2 文件f1比文件f2旧
    • f1 -ef f2 文件f1和文件f2是相同文件的硬链接
    • ! “非”,反转上边所有测试的结果(如果没给出条件,那么返回真)

    二元比较操作符

    整数比较

    • -eq 等于
      if [ "(a" -eq ")b" ]

    • -ne 不等于
      if [ "(a" -ne ")b" ]

    • -gt 大于
      if [ "(a" -gt ")b" ]

    • -ge 大于等于
      if [ "(a" -ge ")b" ]

    • -lt 小于
      if [ "(a" -lt ")b" ]

    • -le 小于等于
      if [ "(a" -le ")b" ]

    • < 小于(在双括号中使用)
      (("(a" < ")b"))

    • <= 小于等于(在双括号中使用)
      (("(a" <= ")b"))

    • 大于(在双括号中使用)
      (("(a" > ")b"))

    • = 大于等于(在双括号中使用)
      (("(a" >= ")b"))

    字符串比较

    • = 等于
      if [ "(a" = ")b" ]

    • == 等于,与=等价
      if [ "(a" == ")b" ]

    • != 不等号
      if [ "(a" != ")b" ]

    • < 小于,按照ASCII字符进行排序
      if [[ "(a" < ")b" ]]
      if [ "(a" < ")b" ]
      注意"<"使用在[ ]结构中的时候需要被转义

    • 大于,按照ASCII字符进行排序
      if [[ "(a" > ")b" ]]
      if [ "(a" > ")b" ]
      注意“>”使用在[ ]结构中的时候需要被转义

    • -z 字符串为“null”,意思就是字符串长度为零 -n 字符串不为“null”

    实验过程截图

  • 相关阅读:
    PC-CSS-默认字体样式
    PC--CSS维护
    PC--CSS技巧
    PC--CSS优化
    PC--CSS命名
    PC--CSS常识
    Base64与MIME和UTF-7
    Base64算法与多版本加密技术
    Base64算法与MD5加密原理
    log4j的使用
  • 原文地址:https://www.cnblogs.com/5315hejialei/p/5967344.html
Copyright © 2011-2022 走看看