可以在Linux命令行上使用test命令将一个元素与另一个元素进行比较,但它更常用于BASH shell脚本中,作为控制逻辑和程序流的条件语句的一部分。
一个基本的例子
您只需打开终端窗口即可尝试这些命令。
测试1 -eq 2 && echo“yes”||回声“不”
上面的命令可以分解如下: 本质上,命令是比较1到2,如果它们匹配,则执行echo“yes”语句,显示“yes”,如果它们不匹配,则执行echo“no”语句,显示“no”。 如果要比较解析为数字的元素,可以使用以下比较运算符: 例子 测试1 -eq 2 && echo“yes”||回声“不”
(在屏幕上显示“no”,因为1不等于2) test 1 -ge 2 && echo“yes”||回声“不”
(在屏幕上显示“no”,因为1不大于或等于2) test 1 -gt 2 && echo“yes”||回声“不”
(在屏幕上显示“no”,因为1不大于2) 测试1 -le 2 && echo“是”||回声“不”
(在屏幕上显示“是”,因为1小于或等于2) 测试1 -lt 2 && echo“是”||回声“不”
(在屏幕上显示“是”,因为1小于或等于2) test 1 -ne 2 && echo“yes”||回声“不”
(在屏幕上显示“是”,因为1不等于2) 如果要比较解析为字符串的元素,可以使用以下比较运算符: 例子 test“string1”=“string2”&& echo“yes”||回声“不”
(在屏幕上显示“no”,因为“string1”不等于“string2”) 测试“string1”!=“string2”&& echo“yes”||回声“不”
(在屏幕上显示“是”,因为“string1”不等于“string2”) test -n“string1”&& echo“yes”||回声“不”
(在屏幕上显示“是”,因为“string1”的字符串长度大于零) test -z“string1”&& echo“yes”||回声“不”
(在屏幕上显示“no”,因为“string1”的字符串长度大于零) 如果要比较文件,可以使用以下比较运算符: 例子 test / path / to / file1 -nt / path / to / file2 && echo“yes”
(如果file1比file2新,则会显示“是”字样) test -e / path / to / file1 && echo“yes”
(如果存在file1,将显示“是”字样) test -O / path / to / file1 && echo“yes”
(如果您拥有file1,则显示“是”字样“) 术语 到目前为止,一切都在比较一件事与另一件事,但如果你想比较两个条件呢? 例如,如果动物有4条腿并且“moo”,它可能是一头牛。简单地检查4条腿并不能保证你有一头牛,但确保检查声音。 要立即测试这两个条件,请使用以下语句: 测试4 -eq 4 -a“moo”=“moo”&& echo“它是一头牛”||回声“它不是牛”
这里的关键部分是-a代表 和 . 有一种更好,更常用的方法来执行相同的测试,如下所示: 测试4 -eq 4 &&测试“moo”=“moo”&& echo“它是一头牛”||回声“它不是牛”
您可能想要进行的另一个测试是比较两个语句,如果两个语句都为真,则输出一个字符串。例如,如果要检查名为“file1.txt”的文件是否存在,或者存在名为“file1.doc”的文件,则可以使用以下命令: test -e file1.txt -o -e file1.doc && echo“file1 exists”|| echo“file1不存在”
这里的关键部分是-o代表 要么 . 有一种更好,更常用的方法来执行相同的测试,如下所示: test -e file1.txt || test -e file1.doc && echo“file1 exists”|| echo“file1不存在” 您实际上不需要使用单词test来执行比较。您所要做的就是将语句括在方括号中,如下所示: -e file1.txt && echo“file1 exists”|| echo“file1不存在”
和基本上与测试相同。 现在你知道了,你可以改进比较多个条件,如下所示: 4 -eq 4 && “moo”=“moo” && echo“它是一头牛”||回声“它不是牛”-e file1.txt || -e file1.doc && echo“file1 exists”|| echo“file1不存在” 测试命令在脚本中更有用,因为您可以测试一个变量与另一个变量的值并控制程序流。在标准命令行上,您可以使用它来测试文件是否存在。
比较数字
比较文字
比较文件
比较多个条件
消除测试关键字
摘要