Linux学习笔记:bash的算术运算及条件测试

来源:互联网 发布:吉郎pop美工族手册 编辑:程序博客网 时间:2024/06/06 00:42

bash中的算术运算

  • +,-,*,/,%,**
  • 实现算术运算:
    • let var=arithmetic expression(算术运算表达式)
    • var=$[ 算术表达式 ]
    • var=$(( 算术表达式 ))
    • var=$(expr arg1 arg2 arg3 …)
      • Note:乘法符号在有些场景需要转义符
    • bash有内建的随机数生成器:$RANDOM
  • 增强型赋值符号:
    • +=,-=,*=,/=,%=
    • 实现方式:let varOPERvalue
      • 例如:let count += 1
  • 自增,自减:
    • let var+=1
      • let var++
    • let var-=1
      • let var–

条件测试

  • 判断某需求是否满足,需要由测试机制来实现
  • 专用的测试表达式需要由测试命令辅助完成测试过程
  • 测试命令
    • test EXPRESSION
    • [ EXPRESSION ]
    • [[ EXPRESSION ]]
      • Note:EXPRESSION前后必须有空白字符
  • bash的测试类型:
    • 数值测试:
      • -gt:是否大于
      • -ge:是否大于等于
      • -eq:是否等于
      • -ne:是否不等于
      • -lt:是否小于
      • -le:是否小于等于
    • 字符串测试:
      • ==:是否等于
      • >:是否大于(ASCII码)
      • <:是否小于(ASCII码)
      • !=:是否不等于
        • Note:此表达式一般用于[[ ]]中
      • =~:左侧祖父穿是否能够呗右侧的PATTERN所匹配
      • -z “STRING”:测试字符串是否为空,空为真,非空为假
      • -n “STRING”:测试字符串是否不空,非空为真,空为假
      • Note:用于字符串比较是用到的操作数都应该使用引号
    • 文件测试:
      • 存在性测试:
        • -a FILE:效果同-e,但不鼓励使用
        • -e FILE:文件存在性测试,存在为真,否则为假
      • 存在性及类别测试:
        • -b FILE:是否存在且为块设备文件
        • -c FILE:是否存在且为字符设备文件
        • -d FILE:是否存在且为目录文件
        • -f FILE:是否存在且为普通文件
        • -h FILE或-L FILE:存在且为符号链接文件
        • -p FILE:是否存在且为命名管道文件
        • -S FILE:是否存在且为套接字文件
      • 文件权限测试:
        • -r FILE:是否存在且可读
        • -w FILE:是否存在且可写
        • -x FILE:是否存在且可执行
      • 文件特殊权限测试:
        • -g FILE:是否存在且拥有sgid权限
        • -u FILE:是否存在且拥有suid权限
        • -k FILE:是否存在且拥有sticky权限
      • 文件大小测试:
        • 是否存在且非空
      • 文件是否打开:
        • -t fd:fd表示文件描述符是否已经打开且与某终端相关
        • -N FILE:文件自从上一次被读取之后是否被修改过
        • -O FILE:当前有效用户是否为文件属主
        • -G FILE:当前有效用户是否为文件属组
      • 双目测试
        • FILE1 -ef FILE2:FILE1和FILE2是否只想同一个设备上的相同硬链接
        • FILE1 -nt FILE2:FILE1是否新于FILE2
        • FILE1 -ot FILE2:FILE1是否旧于FILE2
  • 组合测试条件:
    • 逻辑运算(两种方式):
      • 第一种方式:
        • COMMAND1 && COMMAND2
        • COMMAND1 || COMMAND2
        • !COMMAND
        • 例如:[ -e FILE ] && [-r FILE]
      • 第二种方式:
        • EXPRESSION1 -a EXPRESSION2
        • EXPRESSION1 -o EXPRESSION2
        • !EXPRESSION
        • Note:必须使用测试命令

bash自定义退出状态码

  • exit [n]:自定义退出状态码
    • 注意:脚本中一旦遇到exit命令,脚本会立即终止;终止状态码取决于exit命令后面的数字
    • 注意:如果未给脚本指定退出状态码,整个脚本的退出状态码取决于脚本中执行的最后一条命令的状态码