【转载】linux中shell命令test用法和举例

test 命令最短的定义多是评估一个表达式;若是条件为真,则返回一个 0 值。若是表达式不为真,则返回一个大于 0 的值 — 也能够将其称为假值。检查最后所执行命令的状态的最简便方法是使用 $? 值。出于演示的目的,本文中的例子所有使用了这个参数。shell

test 命令指望在命令行中找到一个参数,当 shell 没有为变量赋值时,则将该变量视为空。这意味着在处理脚本时,一旦脚本寻找的参数不存在,则 test 将报告该错误。express

  当试图保护脚本时,您能够经过将全部参数包含在双引号中来解决这个问题。而后 shell 将变量展开,若是变量没有值,那么将传递一个空值给 test。另外一种方法是在脚本内增长一个额外检查过程来判断是否设置了命令行参数。若是没有设置命令行参数,那么脚本会告诉用户缺乏参数,而后退出。咱们会经过一些例子来更具体地说明全部这些内容。bash

  test 和 [ 命令spa

  虽然 Linux 和 UNIX 的每一个版本中都包含 test 命令,但该命令有一个更经常使用的别名 — 左方括号:[。test 及其别名一般均可以在 /usr/bin 或 /bin (取决于操做系统版本和供应商)中找到。操作系统

  当您使用左方括号而非 test 时,其后必须始终跟着一个空格、要评估的条件、一个空格和右方括号。右方括号不是任何东西的别名,而是表示所需评估参数的结束。条件两边的空格是必需的,这表示要调用 test,以区别于一样常常使用方括号的字符/模式匹配操做。命令行

  test 和 [ 的语法以下:字符串

  test expression自动化

  [ expression ]io

  在这两种状况下,test 都评估一个表达式,而后返回真或假。若是它和 if、while 或 until 命令结合使用,则您能够对程序流进行普遍的控制。不过,您无需将 test 命令与任何其它结构一块儿使用;您能够从命令行直接运行它来检查几乎任何东西的状态。class

  由于它们彼此互为别名,因此使用 test 或 [ 均须要一个表达式。表达式通常是文本、数字或文件和目录属性的比较,而且能够包含变量、常量和运算符。运算符能够是字符串运算符、整数运算符、文件运算符或布尔运算符 — 咱们将在如下各部分依次介绍每一种运算符。


test命令用法。功能:检查文件和比较值
  1)判断表达式
  if test  (表达式为真)
  if test !表达式为假
  test 表达式1 –a 表达式2                  两个表达式都为真
  test 表达式1 –o 表达式2                 两个表达式有一个为真
  2)判断字符串
  test –n 字符串                                   字符串的长度非零
  test –z 字符串                                    字符串的长度为零
  test 字符串1=字符串2                    字符串相等
  test 字符串1!=字符串2               字符串不等
  3)判断整数
  test 整数1 –eq 整数2                        整数相等
  test 整数1 –ge 整数2                        整数1大于等于整数2
  test 整数1 –gt 整数2                         整数1大于整数2
  test 整数1 –le 整数2                         整数1小于等于整数2
  test 整数1 –lt 整数2                          整数1小于整数2
  test 整数1 –ne 整数2                        整数1不等于整数2
  4)判断文件
  test  File1 –ef  File2        两个文件具备一样的设备号和i结点号
  test  File1 –nt  File2        文件1比文件2 新
  test  File1 –ot  File2        文件1比文件2 旧
  test –b File        文件存在而且是块设备文件
  test –c File        文件存在而且是字符设备文件
  test –d File        文件存在而且是目录
  test –e File        文件存在
  test –f File         文件存在而且是正规文件
  test –g File        文件存在而且是设置了组ID
  test –G File        文件存在而且属于有效组ID
  test –h File        文件存在而且是一个符号连接(同-L)
  test –k File        文件存在而且设置了sticky位
  test –b File        文件存在而且是块设备文件
  test –L File        文件存在而且是一个符号连接(同-h)
  test –o File        文件存在而且属于有效用户ID
  test –p File        文件存在而且是一个命名管道
  test –r File        文件存在而且可读
  test –s File        文件存在而且是一个套接字
  test –t FD        文件描述符是在一个终端打开的
  test –u File        文件存在而且设置了它的set-user-id位
  test –w File        文件存在而且可写
  test –x File        文件存在而且可执行
  每一种条件语句的基础都是判断什么是真什么是假。是否了解其工做原理将决定您编写的是质量通常的脚本仍是您将引觉得荣的脚本。
  Shell 脚本的能力时常被低估,但实际上其能力的发挥受制于脚本撰写者的能力。您了解得越多,您就越能像变戏法似地撰写一个文件来使任务自动化和简化您的管理工做。
例1.比较两个数大小

#/bin/bashecho “please enter two number”read aread bif test $a -eq $bthen echo “NO.1 = NO.2″elif test $a -gt $bthen echo “NO.1 > NO.2″else echo “NO.1 < NO.2″fi例2.查找/root/目录下是否存在该文件#/bin/bashecho “enter a file name:”read aif test  -e /root/$athen echo “the file is exist!”else echo “the file is not exist!”fi

相关文章
相关标签/搜索