2007-04-20 | linux的test命令[转]
上一篇 / 下一篇 2007-04-27 22:41:11 / 个人分类:操作系统
linux的test命令(转)51Testing软件测试网 Wl-B7]F~
b3b'z9J-?$z y0出处:http://www.oracle.com/technology/global/cn/pub/articles/dulaney_test.html
r%]/P?~W051Testing软件测试网(e[2[(l\t fKR0~|3C每一种条件语句的基础都是判断什么是真什么是假。是否了解其工作原理将决定您编写的是质量一般的脚本还是您将引以为荣的脚本。
Z \)Sq#u051Testing软件测试网*rm.~^G+dShell 脚本的能力时常被低估,但实际上其能力的发挥受制于脚本撰写者的能力。您了解得越多,您就越能像变戏法似地撰写一个文件来使任务自动化和简化您的管理工作。
[GNfX i(\m03^PM;N4I0在 shell 脚本中进行的每一种操作(除最简单的命令编组之外)都需要检查条件。所有的 shell 脚本“逻辑” — 广义意义下的“逻辑” — 通常都可以分为以下三大类:
i UE^4f-T Eb@ E3h"q051Testing软件测试网Ii4]![ K].Yif {condition exists} then ...
Vxy0o]$S0while {condition exists} do ...51Testing软件测试网rYE!s Ni
until {condition exists} do ...51Testing软件测试网 vJ
GDMQF*mXv&@
无论随后的操作是什么,这些基于逻辑的命令都依靠判断一种条件是否真实存在来决定后续的操作。test 命令是使得在每一种情况下都能够确定要判断的条件是否存在的实用工具。因此,彻底了解这个命令对于撰写成功的 shell 脚本至关重要。51Testing软件测试网d(Y0E_"LV)M6w.k
(lP!m)Lhs+C0工作原理
%]_?.ys P051Testing软件测试网 F:FQ"sz f-K:Ntest 命令最短的定义可能是评估一个表达式;如果条件为真,则返回一个 0 值。如果表达式不为真,则返回一个大于 0 的值 — 也可以将其称为假值。检查最后所执行命令的状态的最简便方法是使用 $? 值。出于演示的目的,本文中的例子全部使用了这个参数。
XMi8]n,s)o051Testing软件测试网 dq7~N(|!itest 命令期望在命令行中找到一个参数,当 shell 没有为变量赋值时,则将该变量视为空。这意味着在处理脚本时,一旦脚本寻找的参数不存在,则 test 将报告该错误。51Testing软件测试网6Rk:kG^h7Xl
{;\1n&m0mpu7p:s0当试图保护脚本时,您可以通过将所有参数包含在双引号中来解决这个问题。然后 shell 将变量展开,如果变量没有值,那么将传递一个空值给 test。另一种方法是在脚本内增加一个额外检查过程来判断是否设置了命令行参数。如果没有设置命令行参数,那么脚本会告诉用户缺少参数,然后退出。我们会通过一些例子来更具体地说明所有这些内容。51Testing软件测试网j i VU9dJ4B
51Testing软件测试网/o2h;z8em+W&wzFtest 和 [ 命令
n1?,Tz&n7ij'{051Testing软件测试网s"Wr \;K+U虽然 Linux 和 UNIX 的每个版本中都包含 test 命令,但该命令有一个更常用的别名 — 左方括号:[。test 及其别名通常都可以在 /usr/bin 或 /bin (取决于操作系统版本和供应商)中找到。