Shell中的条件测试

来源:互联网 发布:数控加工中心模拟软件 编辑:程序博客网 时间:2024/05/16 10:24

  有时判断字符串是否相等或检查文件状态或是数字测试等。Test命令用于测试字符串,文件状态和数字。

文件状态测试

  • 格式 test condition filename 或 [ condition filename ]
  • 使用方括号时,要注意在条件两边加上空格。
  • 文件测试状态 :测试的结果可以用$?的值来判断,0表示成功,其他为失败
选项 说明 -e 是否存在某个文件或者目录 -d 是否是目录 -s 文件长度大于0、非空 -f 正规文件 -w 可写 -L 符号链接 、 -u 文件有suid位设置 -r 可读 -x 可执行 -z 字符串为空
#!/bin/bashecho "test use 1"test -w tmp.txtecho $?echo "test use 2 [] begin"[ -w tmp.txt ]echo $?
  • 多个条件组合起来测试,就是说操作符两边都是test condition filename 或 [ condition filename ]
选项 说明 -a 逻辑与,操作符两边均为真,结果为真,否则为假。 -o 逻辑或,操作符两边一边为真,结果为真,否则为假。 ! 逻辑否,条件为假,结果为真。
  • 测试xac是否可执行或者xab是否可写,使用逻辑或操作
    这里写图片描述

字符串测试

  • 格式(也是两种格式–test和中括号):
    这里写图片描述

  • 使用方括号时,要注意在条件两边加上空格。

  • 测试两个字符是否相等。退出状态变量 $?,0表示成功,1表示失败。
  • string_operator 说明
string_operator 说明 = 两个字符串相等 != 两个字符串不等 -z 空串 -n 非空串
  • 测试环境变量是否为空
    这里写图片描述

  • 测试字符串是否相等
    这里写图片描述

测试数值

  • 格式:

    • "number" numberic_operator "number"
    • [ "number" numberic_operator "number" ]
    • 注意数字两端有双引号
    • 注意中括号两端需要有空格
  • numberic_operator说明

numberic_operator 说明 -eq 数值相等。 -ne 数值不相等。 -gt 第一个数大于第二个数。 -lt 第一个数小于第二个数。 -le 第一个数小于等于第二个数。 -ge 第一个数大于等于第二个数。

这里写图片描述

expr数字运算

用来计算表达式的值,参与运算的必须是数字,否则会报错!利用此点可以用来测试数字格式。

使用乘号时也要用反斜线屏蔽其特殊意义
运算符两边需要有空格!!!

加法运算:expr 10 + 10减法运算:expr 20 - 10加法运算:expr 10 / 5乘法运算:expr 10 \* 5
0 0
原创粉丝点击