ImageVerifierCode 换一换
格式:DOCX , 页数:11 ,大小:23.10KB ,
资源ID:4490403      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bingdoc.com/d-4490403.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(linux的test命令详解Word文档格式.docx)为本站会员(b****2)主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(发送邮件至service@bingdoc.com或直接QQ联系客服),我们立即给予删除!

linux的test命令详解Word文档格式.docx

1、条件两边的空格是必需的,这表示要调用 test,以区别于同样经常使用方括号的字符/模式匹配操作。test 和 的语法如下:test expression expression 在这两种情况下,test 都评估一个表达式,然后返回真或假。如果它和 if、while 或 until 命令结合使用,则您可以对程序流进行广泛的控制。不过,您无需将 test 命令与任何其它结构一起使用;您可以从命令行直接运行它来检查几乎任何东西的状态。因为它们彼此互为别名,所以使用 test 或 均需要一个表达式。表达式一般是文本、数字或文件和目录属性的比较,并且可以包含变量、常量和运算符。运算符可以是字符串运算符、整

2、数运算符、文件运算符或布尔运算符 我们将在以下各部分依次介绍每一种运算符。test 文件运算符利用这些运算符,您可以在程序中根据对文件类型的评估结果执行不同的操作:-b file 如果文件为一个块特殊文件,则为真-c file 如果文件为一个字符特殊文件,则为真-d file 如果文件为一个目录,则为真-e file 如果文件存在,则为真-f file 如果文件为一个普通文件,则为真-g file 如果设置了文件的 SGID 位,则为真-G file 如果文件存在且归该组所有,则为真-k file 如果设置了文件的粘着位,则为真-O file 如果文件存在并且归该用户所有,则为真-p file

3、 如果文件为一个命名管道,则为真-r file 如果文件可读,则为真-s file 如果文件的长度不为零,则为真-S file 如果文件为一个套接字特殊文件,则为真-t fd 如果 fd 是一个与终端相连的打开的文件描述符(fd 默认为 1),则为真-u file 如果设置了文件的 SUID 位,则为真-w file 如果文件可写,则为真-x file 如果文件可执行,则为真以下示例显示了此简单操作的运行情况:$ ls -ltotal 33drwxr-xr-w 2 root root 1024 Dec 5 05:05 LST-rw-rw-rw- 1 emmett users 27360 Feb

4、 6 07:30 evan-rwsrwsrwx 1 root root 152 Feb 6 07:32 hannahdrwxr-xr-x 2 emmett users 1024 Feb 6 07:31 karen-rw- 1 emmett users 152 Feb 6 07:29 kristin-rw-r-r- 1 emmett users 152 Feb 6 07:29 spencer$ test -r evan$ echo $?$ test -r walter1由于第一次评估为真 文件存在且可读 返回值为真,或 0。由于第二次评估的文件不存在,该值为假,返回值不为零。将值指定为零或非零很

5、重要,因为在失败时不会始终返回 1(虽然这是通常返回的值),可能返回一个非零值。正如开头所提到的,除了使用 test 外,您还可以用方括号 将命令括住来向 shell 发出同样的命令 如下所示:$ -w evan $ -x evan 同样,第一个表达式为真,第二个表达式为假 正如返回值所指示的那样。您还可以使用以下命令将两个文件彼此进行比较:file1 -ef file2 测试以判断两个文件是否与同一个设备相连,是否拥有相同的 inode 编号file1 -nt file2 测试以判断第一个文件是否比第二个文件更新(由修改日期决定)file1 -ot file2 测试以判断第一个文件是否比第二

6、个文件更旧以下示例显示了使用这些运算符比较文件的结果:$ evan -nt spencer $ karen -ot spencer 名为 evan 的文件比名为 spencer 的文件更新,因而评估为真。类似地,名为 karen 的文件比名为 spencer 的文件更新,因此该评估为假。字符串比较运算符如标题所示,这组函数比较字符串的值。您可以检查它们是否存在、是否相同或者是否不同。String 测试以判断字符串是否不为空-n string 测试以判断字符串是否不为空;字符串必须为 test 所识别-z string 测试以判断字符串是否为空;string1 = string2 测试以判断 s

7、tring1 是否与 string2 相同string1 != string2 测试以判断 string1 是否与 string2 不同对任何变量进行的最有用的测试之一是判断它的值是否不为空,可以简单地将其放在 test 命令行中执行这种测试,如下例所示:$ test $variable强烈建议进行此种测试时用双引号将变量括住,以让 shell 识别变量(即使变量为空)。默认情况下执行的基本字符串评估和 -n 测试从功能上讲是相同的,如以下示例所示:#example1if test -n $1thenecho fi执行以上例子中的代码将根据 $1 是否存在给出以下结果:$ example1 f

8、ridayfriday$ example1如果将代码更改为以下形式,则结果将相同:#example2if test 如下所示:$ example2 friday$ example2所有这些表明,通常不需要 -n,它代表默认操作。要从一个不同的角度来查看各种可能性,您可以用另一个选项来替换 -n,并检查该值是否为空(相对于非空)。这可以用 -z 选项来实现,代码为:#example3if test -z no values were specified运行如下:$ example3no values were specified$ example3 friday$如果在没有命令行参数的情况下运行

9、该程序,而表达式评估为真,那么将执行程序块中的文本。如果在命令行中有值,则脚本退出,不执行任何操作。将评估操作放在脚本的开头非常有用,这可以在可能产生错误的进一步处理之前预先检查变量值。其余的字符串运算符对两个变量/字符串之间的精确匹配或其中的差异(您也可以称之为等价性和“不等价性”)进行评估。第一个例子对匹配进行测试:$ envLOGNAME=emmettPAGER=lessSHELL=/bin/bashTERM=linux$ $LOGNAME = emmett kristin或者,该评估可以以脚本的形式用于决定是否运行脚本:#example4if processing beginninge

10、lseincorrect user这种方法可以用来寻找任意的值(如终端类型或 shell 类型),在允许脚本运行之前这些值必须匹配。请注意,= 或 != 运算符的优先级高于其它大多数可指定选项,且要求必须伴有表达式。因此,除了比较字符串的选项之外,= 或 != 都不能和检查某种东西(如可读文件、可执行文件或目录)的存在性的选项一起使用。整数比较运算符正如字符串比较运算符验证字符串相等或不同一样,整数比较运算符对数字执行相同的功能。如果变量的值匹配则表达式测试为真,如果不匹配,则为假。整数比较运算符不处理字符串(正如字符串运算符不处理数字一样):int1 -eq int2 如果 int1 等于

11、int2,则为真int1 -ge int2 如果 int1 大于或等于 int2,则为真int1 -gt int2 如果 int1 大于 int2,则为真int1 -le int2 如果 int1 小于或等于 int2,则为真int1 -lt int2 如果 int1 小于 int2,则为真int1 -ne int2 如果 int1 不等于 int2,则为真以下示例显示了一个代码段,其中在命令行中给出的值必须等于 7:#example5if $1 -eq 7 Youve entered the magic number.ve entered the wrong number.运行中:$ exa

12、mple5 6ve entered the wrong number.$ example5 7ve entered the magic number.和字符串一样,比较的值可以是在脚本外为变量赋的值,而不必总是在命令行中提供。以下示例演示了实现这一点的一种方法:#example6if $1 -gt $number Sorry, but $1 is too high.$1 will work.$ set number=7$ export number$ example6 8Sorry, but 8 is too high.$ example6 77 will work.整数比较运算符最佳的用途之

13、一是评估指定的命令行变量的数目,并判断它是否符合所要求的标准。例如,如果某个特定的命令只能在有三个或更少变量的情况下运行,#example7 - display variables, up to three$# -gt 3 You have given too many variables.exit $#只要指定三个或更少的变量,该示例脚本将正常运行(并返回值 0)。如果指定了三个以上的变量,则将显示错误消息,且例程将退出 同时返回与命令行中给定的变量数相等的退出代码。对这个过程进行修改可以用来在允许运行报表之前判断当天是否是本月的最后几天:#example8 - to see if it i

14、s near the end of the month#set date # use backward quotes$3 -ge 21 It is close enough to the end of the month to proceedThis report cannot be run until after the 21st of the monthexit $3在这个例子中,设置了六个变量(通过空格彼此分开):$1 = Fri$2 = Feb$3 = 6$4 = 08:56:30$5 = EST$6 = 2004这些值可以在脚本中使用,就像它们是在命令行中输入的一样。请注意,退出命令

15、再次返回一个值 在这种情况下,返回的值是从 $3 的值中得到的日期。这一技巧在故障诊断时会非常有用 如果您认为脚本应该运行而没有运行,那么请查看 $? 的值。一种类似的想法可能是撰写一个只在每个月的第三个星期三运行的脚本。第三个星期三一定在该月的 15 日到 21 日之间。使用 cron,您可以调用脚本在 15 日到 21 日之间每天的一个指定时间运行,然后使用脚本的第一行检查 $1(在设置日期之后)的值是否为 Thu。如果为 Thu,那么执行剩下的脚本,如果不是,则退出。而另一个想法可能是,只允许脚本在超过 6:00 p.m. (18:00),所有用户都回家之后运行。只要撰写脚本,使其在值低

16、于 18 时退出,并通过使用以下命令来获取时间(将其设为 $1)set date +%H布尔运算符布尔运算符在几乎每种语言中的工作方式都相同 包括 shell 脚本。在 nutshell 中,它们检查多个条件为真或为假,或者针对假的条件而不是真的条件采取操作。与 test 搭配使用的运算符有! expr 如果表达式评估为假,则为真expr1 -a expr2 如果 expr1 和 expr2 评估为真,则为真expr1 -o expr2 如果 expr1 或 expr2 评估为真,则为真可以用 != 运算符代替 = 进行字符串评估。这是最简单的布尔运算符之一,对 test 的正常结果取非。其余

17、两个运算符中的第一个是 -a(即 AND)运算符。要使测试最终为真,两个表达式都必须评估为真。如果任何一个评估为假,则整个测试将评估为假。例如,HOME=/MAIL=/usr/mail/emmettPATH=:/bin:/usr/bin:/usr/lbinTZ=EST5:0EDT -a $TERMlinuxLOGNAMEkaren在第一个评估中,两个条件都测试为真(在一个 linux 终端上登录的是 emmett),因此整个评估为真。在第二个评估中,终端检查正确但用户不正确,因此整个评估为假。简而言之,AND 运算符可以确保代码只在两个条件都满足时才执行。相反,只要任何一个表达式测试为真,OR

18、 (-o) 运算符即为真。我们来修改先前的例子,并将其放到一个脚本中来说明这一点:#example9 -o Ready to begin.Incorrect user and terminal.$ example9Ready to begin.$ LOGNAME=karen在脚本第一次运行时,评估判断用户是否等于 emmett。如果发现用户等于 emmett,则脚本转至 echo 语句,并跳过其余的检查。它从不检查终端是否等于 linux,因为它只需要找到一条为真的语句就可以使整个运算为真。在脚本第二次运行时,它判断用户不是 emmett,因此它将检查并发现终端确实是 linux。由于一个条件

19、为真,脚本现在转至 echo 命令。为了引出第二条消息,两个条件都必须为假。在先前确定时间是否为月末的例子中,可以执行类似的检查来防止用户试图在周末运行脚本:#example10 - Do not let the script run over the weekend#SatSunThis report cannot be run over the weekend.一些有用的示例示例 1:在脚本文件中出现的“逻辑”的最简单的形式(如本文所有示例中所示)是“if . then”语句。先前的一个代码段检查是否存在一定数量的变量,然后将这些变量回显。假设我们对此稍微做一些修改,比如我们想回显变量,并

20、且每次回显均减去最左边的变量,以显示一个倒的三角形。虽然这听起来很简单,但实际并非如此;这是您在执行大规模处理时想实现的方式:处理第一个变量、转移、处理下一个变量出于演示的目的,可以按以下方式撰写脚本中的重要行:#example11 - display declining variables, up to three -gt 3 # see if more than three variables are givenYou have given more than three variables.exitecho $*$2shift它将按以下方式执行:$ example11 oneone$ e

21、xample11 one twoone twotwo$ example11 one two threeone two threetwo threethree$ example11 one two three fourYou have given more than three variables.出于检查的目的将数量限制为三个变量的原因是减少在例子中要检查的行数。一切都按部就班地进行,虽然它令人难以置信地混乱;用户因使用了超过程序依设计所能处理的变量数而得到警告,且脚本退出。如果变量数为 3 或更少,则运算的核心部分开始执行。回显变量,执行测试以查看另一个变量是否存在。如果另一个变量存在,则执

22、行一次转移,回显该变量,执行另一测试,等等。总共使用了 16 个有效行,而程序仅能处理不超过三个变量 非常混乱。假设消除变量数的限制,程序可以处理任意数量的变量。经过一些修改,脚本被缩短(美化)了,并能处理任意数量的变量:#example12 - display declining variables, any numberwhile -gt 0 dodone$ example12 1 2 3 4 5 6 7 8 9 01 2 3 4 5 6 7 8 9 02 3 4 5 6 7 8 9 03 4 5 6 7 8 9 04 5 6 7 8 9 05 6 7 8 9 06 7 8 9 07 8

23、9 08 9 09 0现在减少到只有 5 个有效行,且消除了第一个脚本三个变量的限制,并在运行时要更高效。示例 2:无论何时当在脚本内执行与处理相关的操作时,下一个操作将始终检查上一操作的状态,以确认它已成功完成。您可以通过检查 $? 的状态并验证它等于 0 来实现这一目的。例如,如果一个数据目录是否能访问非常重要,#example13TEMP=LSTcd $TEMPif $?-ne 0 Data directory could not be found.Exit处理错误资源下载针对 Linux 的 Oracle 数据库 10gOracle 数据库 10g 第 1 版 (10.1.0.2) 现

24、在可用于 Linux x86 和 Linux Itanium 平台;请在此从 OTN 上免费下载。访问 Linux 技术中心收藏本页,以获取关于 Linux 系统管理员最佳应用的一般技术信息,以及关于 Oracle-on-Linux 产品群的具体技术信息。相关文章Linux 相关技术文章的存档test 命令常常出现的错误事实上只有两种类型。第一种是未使用正确的评估类型,例如将字符串变量与整型变量进行比较或者将带填充的字符串与不带填充的字符串进行比较。仔细评估您使用的变量将使您最终找到错误的根源,并让您能够解决这些问题。第二种错误类型包括将方括号误认为别名之外的某个东西。方括号与其内容之间必须有一个空格;否则,它们将不能解释其中的对象。 -gt 9test: missing请注意,错误消息指示 test 存在问题,即使使用了别名 。这些问题很容易发现,因为错误消息准确地将这

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2