bash脚本之条件判断

bash脚本之条件判断

  • 条件测试
    • 数值比较
    • 字符串比较
    • 文件测试
    • 组合测试条件
    • 向脚本里传递参数
  • if判断
  • case语句
  • for循环
  • while循环
  • until循环
  • continue
  • break
  • 创建死循环
  • while的特殊用法
  • for的特殊用法
  • select

条件测试

条件测试可以使用以下方法:

  • 1、执行命令,并利用命令状态返回值来判断
    • 0 :成功
    • 1-255:失败
  • 2、测试表达式
    • test EXPRESSION
    • [ EXPRESSION ]
    • [[ EXPRESSION ]]

数值比较

表达式 解释
-eq 是否等于
-nq 是否不等于
-gt 左侧是否大于右侧
-ge 左侧是否大于等于右侧
-lt 是否小于
-le 是否小于等于

字符串比较

表达式 解释
== 是否等于
> 是否大于
< 是否小于
!= 是否不等于
=~ 左侧的字符是否能够被右侧模式所匹配
-z “STRING” 判定指定的字符串是否为空,空则为真,不空为假
-n “STRING” 判定指定的字符串是否为不空,空则为假,不空为真

注意:字符串进行比较时,最好使用双括号,并添加“”号

文件测试

存在性测试

  • -a FILE
  • -e FILE
    • 文件的存在性测试,存在为真,不存在为假,一般使用-e选项

存在性及类型测试

表达式 解释
-b file 是否存在并且为块设备文件
-c file 是否存在并且为字符设备文件
-d file 是否存在并且为目录文件
-f file 是否存在并且为普通文件
-h OR -l file 是否存在并且为符号链接文件
-p file 是否存在并且为命名管道文件
-S file 是否存在并且为套接字文件

** 文件权限测试**

表达式 解释
-r file 是否存在并且对当前用户可读
-w file 是否存在并且对当前用户可写
-x file 是否存在并且对当前用户可执行

特殊权限测试

表达式 解释
-g file 是否存在并且拥有sgid权限
-u file 是否存在并且拥有suid权限
-k file 是否存在并且拥有sticky权限

文件是否有内容

  • -s FILE:是否有内容

文件时间戳测试

  • -N FILE:文件自从上一次读取操作后是否被修改过

从属关系测试

  • -O FILE:当前用户是否为文件的属主
  • -G FILE:当前用户是否属于文件的属组

组合测试条件

逻辑运算
 COMMAND1&& COMMAND2
 COMMAND1 || COMMAND2:为真,执行comm1 否则执行comm2
 !COMMAND1  

  第二种方式:
                EXPRESSION1 -a   EXPRESSION 2
                EXPRESSION1 -o   EXPRESSION 2
               !EXPRESSION

向脚本里传递参数

位置参数变量:

  • $1,$2, 3.... 3.... 3....{10}…

你可能感兴趣的:(bash脚本之循环和条件判断)