的Linux测试对另一个命令将一个元素,但是它更常用BASH shell脚本作为的一部分条件语句控制逻辑和程序流。
一个基本的例子
试试这些命令一个终端窗口。
测试1情商2 & &回声“是的”| |回声“不”
上面的命令分解如下:
- 测试:命令执行比较
- 1你要比较:第一个元素。在本例中,它是数字1但它可以是任何数,或一个字符串引号。
- - gydF4y2Ba情商:比较的方法。在这种情况下,您正在测试一个值是否等于另一个。
- 2:你比较第一个元素的元素。在本例中,它是数字2。
- & &:Linux快捷命令链在一起,在序列。测试链的命令的输出。使用执行当它前面的命令的退出状态为0,这是一个幻想的说法命令没有失败。
- 回声“是的”:如果比较成功运行的命令。在这种情况下,我们要做的是要求回声命令打印标准输出“yes”这个词,但你可以运行任何命令,执行如果试验结果证明是真的。
- | |相反的,在某种程度上,& &;它前面的套管只有执行命令失败(有一个退出状态,不是0)。
- 回应“不”:命令运行如果比较失败。
运行shell提示符,测试不返回一个值到标准输出,它仅仅返回一个退出状态代码。这就是为什么链接一个echo命令是必要的。
本质上,该命令比较1 - 2,如果他们匹配,echo语句执行“是的”显示“是”,如果他们不匹配,回声执行“不”语句显示“没有。”
比较数据
如果你是比较元素,解析数字你可以使用下面的比较运算符:
- 情商:1 =价值2
- 通用电气:值1大于或等于2
- gt2:价值大于价值
- 勒:价值1值小于或等于2
- lt2:价值1不到价值
- - ne2:价值1不等于价值
示例测试
测试1情商2 & &回声“是的”| |回声“不”
(显示在屏幕上的“不”,因为1不等于2)
测试1通用电气2 & &回声“是的”| |回声“不”
(显示在屏幕上的“不”,因为1不大于或等于2)
测试1 gt 2 & &回声“是的”| |回声“不”
(显示在屏幕上的“不”,因为1不大于2)
测试1 le 2 & &回声“是的”| |回声“不”
(屏幕显示“是”,因为1是小于或等于2)
测试1 lt 2 & &回声“是的”| |回声“不”
(屏幕显示“是”,因为1是小于或等于2)
测试1 - ne 2 & &回声“是的”| |回声“不”
(屏幕显示“是”,因为1不等于2)
比较文本
当你比较元素,解析字符串,使用下面的比较运算符:
- =2:字符串匹配字符串
- ! =2:字符串不匹配字符串
- - n:字符串长度大于0
- - z:字符串长度等于0
例子
测试“string1”=“string2相等”& &回声“是的”| |回声“不”
(显示在屏幕上的“不”,因为“string1”不等于“string2相等”)
测试”string1 " ! = " string2相等”& &回声“是的”| |回应“不”
(屏幕显示“是”,因为“string1”不等于“string2相等”)
测试- n“string1”& &回声“是的”| |回声“不”
(屏幕显示“是”,因为“string1”有一个字符串长度大于零)
测试- z“string1”& &回声“是的”| |回声“不”
(显示在屏幕上的“不”,因为“string1”有一个字符串长度大于零)
比较文件
当你比较文件,使用下面的比较运算符:
- 英孚:文件有相同的设备和inode号(他们是同一个文件)
- - nt:第一个比第二个更新的文件
- 不:第一个比第二个大文件
- - b:文件存在,块特殊
- - c:文件存在,性格特别
- - d:文件存在并且是一个目录
- - e:文件存在
- - f:文件存在,是一个常规文件
- - g:文件是否存在,并指定的组数
- - g:文件存在和所有者的用户组
- - h或- l:文件存在,是一个符号链接
- - k:文件存在,有其粘贴位设置
- - o:你老板的文件存在
- - p:文件存在,是一个命名管道
- - r:文件存在并且是可读的
- - s:文件存在,大小大于零
- - s:文件存在,是一个套接字
- - t:打开文件描述符终端
- - u:文件存在和set-user-id设置
- - w:文件存在并且是可写的
- - x:该文件存在并且是可执行的
例子
测试/道路/ / file1 - nt /路径/ / file2 & &回声“是的”
(如果更新比file1 file2然后将显示“是”这个词)
测试- e /道路/ / file1 & &回声“是的”
(如果file1存在“是的”这个词将会显示)
测试- o /道路/ / file1 & &回声“是的”
(如果你拥有file1然后显示“是””这个词)
块特殊:文件是一个块设备这意味着读取数据块的字节。这些通常是硬盘等设备文件。
性格特别:文件当你写立即执行,通常是一个串口等设备
比较多个条件
到目前为止,一切都比较一件事,但如果你想比较两个条件吗?
例如,如果一个动物有四条腿,“moo”,它可能是一头奶牛。只是检查四条腿并不能保证你有一头奶牛,但检查声音的确如此)。
测试两种条件下,使用以下语句:
测试4情商——“moo”=“moo”& &回声“一头牛”| |回声“这不是牛”
这是关键的部分——一个国旗,这代表和。
有一个更好、更常用的方法执行相同的测试,如下:
测试4 eq 4 & &测试“moo”=“moo”& &回声“一头牛”| |回声“这不是牛”
跟着树枝!
的分支测试命令是显著的。如果第一个测试(4 = 4)失败,测试与一个非零退出代码命令终止。因此,我们跳转到套管的象征,“这不是一个牛”打印到标准输出。但是,如果第一个测试成功,因此测试结果的退出代码0,然后跳转到第一个使用。下一个语句是另一个测试条件!
如果第二次测试失败,再一次,我们跳到套管和从那里出发。然而,如果第二个测试成功,我们跳到第二个使用声明,在这个例子只是回应“这是一头牛”到标准输出,然后终止shell提示符。
另一项测试比较两个语句,如果是真的,输出一个字符串。例如,检查一个文件名为“file1。txt”存在或文件称为“file1。医生”存在,您可以使用以下命令:
测试- e file1。txt - o - e file1。医生& &回声“file1存在”| |回声“file1不存在”
这是关键的部分- o这代表或。
有一个更好、更常用的方法执行相同的测试,如下:
测试- e file1。txt | |测试- e file1。医生& &回声“file1存在”| |回声“file1不存在”
消除测试关键字
实际上你不需要使用这个词测试执行比较。所有你要做的就是将方括号中的语句如下:
[- e file1。txt) & &回声”file1存在“| |回声“file1不存在”
的(和]想要表达的意思是一样的测试。
现在你知道你可以改善比较多个条件如下:
[4 eq 4] & & & & (“moo”=“moo”)回声“一头牛”| |回声“这不是牛”
[- e file1。txt) | | - e file1。doc) & &回声”file1存在“| |回声“file1不存在”
总结
测试命令在脚本中更有用,因为你可以测试一个变量对另一个的价值和控制程序流。在命令行上,用它来测试一个文件是否存在。