如果命令或表达式有效,则测试命令返回0,否则返回1。使用测试命令测试命令的基本语法如下:test"var1"operator"var2"如果使用变量,变量名需要用双引号引起来。我们看下面的例子,使用test命令检查10是否等于20,10是否等于10:$test10-eq20&&echo"true"||echo"false"上面命令中:test-测试命令10-段一变量-eq-比较运算符20-第二个变量如果给定的表达式有效,则执行第一条命令,否则执行第二条命令。在上面的测试命令中,可以用方括号[]代替测试命令。但是要记住的一件事是[标记和要比较的变量之间需要有一个空格:[10-eq20]&&echo"true"||echo"false"除了整数,你还可以使用bash中的test命令来比较字符串,我们来看一些例子。使用test命令比较字符串,检查字符串是否不为空-n选项用于检查字符串的长度是否为非零。如果字符串不为空则返回true,如果字符串为空则返回false:$[-n"sam"]&&echo"True"||echo"False"检查字符串是否为空-z使用选项检查字符串长度是否为零。如果字符串长度为零,则返回true,否则返回false:$[-z"sam"]&&echo"True"||echo"False"检查字符串是否相等"="运算符检查string1是否等于string2。如果两个字符串相等则返回0,如果两个字符串不相等则返回1:$["sam"="SAM"]&&echo$?||回声$?在这里,表达方式略有不同。标准输出变量打印使用$?而不是真或假。检查字符串是否不相等!=运算符检查String1是否不等于String2。如果两个字符串不相等,则返回0。如果两个字符串相等,则返回1:["abc"!="ABC"]&&echo$?||相等返回0,否则返回1:[10-eq20]&&echo$?||10-ne20]&&回显$?||回声$?检查一个数是否大于或等于另一个选项-ge用于检查整数1是否大于或等于整数2,如果是则返回0,否则返回1:[100-ge10]&&echo$?||回声$?-gt运算符检查整数1是否大于整数2。如果是,则返回0。否则,返回1:[20-gt10]&&echo$?||回声$?检查数字是否小于或等于另一个-le运算符检查整数1是否小于或等于整数2。如果为真,则返回0,否则返回1:[5-le10]&&echo$?||回声$?-lt运算符检查整数1是否小于整数2。如果整数1小于整数2,则返回0,否则返回1:[5-lt10]&&echo$?||回声$?测试命令与文件和目录操作测试命令也可以用于文件和目录,让我们看几个例子。以下命令用于检查文件是否对当前用户可执行。如果可执行则返回0,否则返回1:[test-xfilename]&&echoexecutable||echonon-executable也可以用同样的方法查看文件的其他权限,比如r和w。这里可以使用的其他常用参数包括:命令说明-e目录/文件是否存在-f是否为文件-d是否为目录-s文件大小是否大于0-L是否为符号link-S是否是套接字(socket)在bash脚本中使用测试命令。在上面的例子中,我们用一行代码来演示。此外,我们还可以在bash脚本中使用test命令和ifelse分支条件。看一个简单的例子,传递参数比较两个数:#!/bin/bash##检查两个数是否相等read-p"输入第一个数:"num1read-p"输入第二个数:"num2iftest"$num1"-eq"$num2"thenecho"$num1isequalto$num2"elseecho"$num1isnotequalto$num2"fi你可以执行看看结果,如下图显示:
