如何在Bash脚本中使用测试条件

可以在Linux命令行上使用测试命令将一个元素与另一个元素进行比较,但它在BASH shell脚本中更常用作控制逻辑和程序流的条件语句的一部分。

一个基本的例子

您只需打开一个终端窗口即可尝试这些命令。

测试1 -eq 2 &&回声“是”|| 回声“不”

上述命令可以细分如下:

实质上,该命令比较1到2,并且它们匹配回显“是”语句被执行,其显示“是”,并且如果它们不匹配,回显“否”语句显示“否”。

比较数字

如果你比较的元素是数字解析,你可以使用下面的比较运算符:

例子:

测试1 -eq 2 &&回声“是”|| 回声“不”

(因为1不等于2,所以向屏幕显示“否”)

测试1 -ge 2 && echo“yes”|| 回声“不”

(屏幕显示“否”,因为1不大于或等于2)

测试1 -gt 2 &&回声“是”|| 回声“不”

(由于1不大于2,因此在屏幕上显示“否”)

测试1 -le 2 &&回声“是”|| 回声“不”

(因为1小于或等于2,所以对屏幕显示“是”)

测试1 -lt 2 &&回声“是”|| 回声“不”

(因为1小于或等于2,所以对屏幕显示“是”)

测试1 -ne 2 &&回声“是”|| 回声“不”

(因为1不等于2,所以对屏幕显示“是”)。

比较文字

如果您比较解析为字符串的元素,则可以使用以下比较运算符:

例子:

测试“string1”=“string2”&&回声“是”|| 回声“不”

(因为“string1”不等于“string2”,所以在屏幕上显示“no”)

测试“string1”!=“string2”&&回声“是”|| 回声“不”

(因为“string1”不等于“string2”,所以对屏幕显示“yes”)

test -n“string1”&& echo“yes”|| 回声“不”

(对屏幕显示“yes”,因为“string1”的字符串长度大于零)

测试-z“string1”&&回声“是”|| 回声“不”

(屏幕显示“no”,因为“string1”的字符串长度大于零)

比较文件

如果您正在比较文件,则可以使用以下比较运算符:

例子:

test / path / to / file1 -n / path / to / file2 && echo“yes”

(如果file1比file2更新,则会显示“是”一词)

test -e / path / to / file1 && echo“yes”

(如果file1存在,将显示“是”一词)

测试-O / path / to / file1 && echo“yes”

(如果您拥有file1,则显示“是”一词)“)

术语

比较多个条件

迄今为止,所有事情都是将一件事情与另一件事情进行比较,但如果你想比较两种情况呢。

例如,如果一只动物有4条腿并且走向“mo it”,它可能是一头母牛。 简单地检查4条腿并不能保证你有一头牛,但检查它确实会做的声音。

要一次测试两个条件,请使用以下语句:

test 4 -eq 4 -a“moo”=“moo”&& echo“it is a cow”|| 回声“它不是牛”

这里的关键部分是-a代表和。

有一个更好和更常用的方法来执行相同的测试,如下所示:

test 4 -eq 4 && test“moo”=“moo”&& echo“it is a cow”|| 回声“它不是牛”

你可能想要做的另一个测试是比较两个语句,如果两个语句都是真的,则输出一个字符串。 例如,如果您想检查名为“file1.txt”的文件是否存在,或者是否存在名为“file1.doc”的文件,则可以使用以下命令

test -e file1.txt -o -e file1.doc && echo“file1 exists”|| 回声“file1不存在”

这里的关键部分是代表“或”的-o。

有一个更好和更常用的方法来执行相同的测试,如下所示:

测试-e file1.txt || test -e file1.doc && echo“file1 exists”|| 回声“file1不存在”

消除测试关键字

您实际上不需要使用单词测试来执行比较。 你所要做的就是把这个陈述放在方括号中,如下所示:

[-e file1.txt] && echo“file1 exists”|| 回声“file1不存在”

[和]基本上意味着与测试相同。

现在你知道这一点,你可以改进比较多个条件如下:

[4 -eq 4] && [“moo”=“moo”] && echo“it is a cow”|| 回声“它不是牛”

[-e file1.txt] || [-e file1.doc] && echo“file1 exists”|| 回声“file1不存在”

概要

测试命令在脚本中更加有用,因为您可以测试一个变量与另一个变量的值并控制程序流。 在标准命令行上,您可以使用它来测试文件是否存在或