如何在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不存在”

概要

測試命令在腳本中更加有用,因為您可以測試一個變量與另一個變量的值並控製程序流。 在標準命令行上,您可以使用它來測試文件是否存在或