shell中if条件判断

转自:http://lovelace.blog.51cto.com/1028430/1211353

条件测试类型

  整数测试

  字符测试

  文件测试

1、条件测试表达式

  [ expression ]  括号两端必须要有空格

  [[ expression ]] 括号两端必须要有空格

  test expression

  组合测试条件

    -a:and

    -o:or

    !:取非

2、整数比较

  -eq 测试两个整数是否相等
  -ne 测试两个整数是否不等
  -gt 测试一个数是否大于另一个数
  -lt 测试一个数是否小于另一个数
  -ge 大于或等于
  -le 小于或等于

  命令间的逻辑关系

  逻辑与:&&
  第一个条件为假 第二个条件不用在判断
  第一个条件为真,第二个条件必须得判断

  逻辑或:||

3、字符串比较

  == 等于 两边要有空格
  != 不等
  > 大于
  < 小于

4、文件测试

  -z string 测试指定字符是否为空,空着真,非空为假
  -n string 测试指定字符串是否为不空,空为假 非空为真
  -e FILE 测试文件是否存在
  -f file 测试文件是否为普通文件
  -d file 测试指定路径是否为目录
  -r file 测试文件对当前用户是否可读
  -w file 测试文件对当前用户是否可写
  -x file 测试文件对当前用户是都可执行
  -z 是否为空 为空则为真
  -a 是否不空

5、if语法

  if 判断条件 0为真 其他都为假

6、条件测试的写法:

  1、执行一个命令的结果
  if grep -q "rm" fs.sh;then

  2、传回一个命令执行结果的相反值
  if !grep -q "rm" fs.sh;then

  3、使用复合命令((算式))
  if ((a>b));then

  4、使用bash关键字 [[判断式]]
  if [[ str > xyz ]];then

  5、使用内置命令:test 判断式
  if test "str" \> "xyz";then

  6、使用内置命令:[判断式] 类似test
  if [ "str" \> "xyz" ];then

  7、使用-a -o进行逻辑组合
  [ -r filename -a -x filename ]

  8、命令&&命令
  if grep -q "rm" fn.sh && [ $a -lt 100 ];then

  9、命令||命令
  if grep -q "rm" fn.sh || [ $a -lt 100 ];then

猜你喜欢

转载自www.cnblogs.com/hequan/p/9259055.html