bash 腳本中的 test 命令用于檢查表達(dá)式的有效性,檢查命令或表達(dá)式為 true 或者 false。此外,它還可以用于檢查文件的類型和權(quán)限。
如果命令或表達(dá)式有效,則 test 命令返回0,否則返回1。
使用 test 命令
test 命令的基本語法如下所示:
test “var1” operator “var2”
如果其中用到了變量,需要在變量名中使用雙引號(hào)。
我們看下面的例子,使用 test 命令檢查10是否等于20,以及10是否等于10:
$ test 10 -eq 20 && echo "true" || echo "false"
上面的命令中:
-
test - test 命令
-
10 - 第一個(gè)變量
-
-eq - 比較運(yùn)算符
-
20 - 第二個(gè)變量
如果給定的表達(dá)式有效,則執(zhí)行第一個(gè)命令,否則執(zhí)行第二個(gè)命令。
在上述測(cè)試命令中,可以使用方括號(hào) [] 來代替 test 命令。不過有一點(diǎn)需要記住,[ 標(biāo)記和要比較的變量之間需要有空格:
[ 10 -eq 20 ] && echo "true" || echo "false"
除了整數(shù)以外,也可以在 bash 中使用 test 命令比較字符串,下面我們來看一些例子。
使用 test 命令比較字符串
檢查字符串是否不為空
-n 選項(xiàng)用于檢查字符串長度是否為非零。如果字符串不為空則返回 true,如果字符串為空,則返回 false:
$ [ -n "sam" ] && echo "True" || echo "False"
檢查字符串是否為空
-z 選項(xiàng)用于檢查字符串長度是否為零。如果字符串長度為零,則返回true,否則返回false:
$ [ -z "sam" ] && echo "True" || echo "False"
檢查字符串是否相等
“=”運(yùn)算符檢查string1是否等于string2。如果兩個(gè)字符串相等,則返回0;如果兩個(gè)字符串不相等,則返回1:
$ [ "sam" = "SAM" ] && echo $? || echo $?
在這里,表達(dá)式略有不同。stdout 變量打印使用 $? 而不是 true 或 false。
檢查字符串是否不相等
!=運(yùn)算符檢查 String1 是否不等于 String2。如果這兩個(gè)字符串不相等,則返回0。如果兩個(gè)字符串相等,則它返回1:
[ "abc" != "ABC" ] && echo $? || echo $?
test 命令比較整數(shù)
檢查數(shù)字是否相等
-eq 選項(xiàng)檢查兩個(gè)整數(shù)是否相等,如果相等返回0,否則返回1:
[ 10 -eq 20 ] && echo $? || echo $?
檢查數(shù)字是否不相等
-ne 選項(xiàng)檢查兩個(gè)整數(shù)是否不相等,如果不相等返回0,否則返回1:
[ 10 -ne 20 ] && echo $? || echo $?
檢查一個(gè)數(shù)字是否大于等于另一個(gè)
選項(xiàng) -ge 用于檢查整數(shù)1 是否大于等于整數(shù)2,如果是則返回0,否則返回1:
[ 100 -ge 10 ] && echo $? || echo $?
-gt 運(yùn)算符檢查整數(shù)1是否大于整數(shù)2。如果是,則返回0。否則,返回1:
[ 20 -gt 10 ] && echo $? || echo $?
檢查一個(gè)數(shù)字是否小于等于另一個(gè)
-le 運(yùn)算符檢查整數(shù)1是否小于或等于整數(shù)2。如果為真,則返回0,否則返回1:
[ 5 -le 10 ] && echo $? || echo $?
-lt 運(yùn)算符檢查整數(shù)1是否小于整數(shù)2。如果整數(shù)1小于整數(shù)2,則返回0,否則返回1:
[ 5 -lt 10 ] && echo $? || echo $?
test 命令與文件和目錄操作
test 命令還可用于文件和目錄,下面我們來看幾個(gè)例子。
下面的命令用于檢查文件對(duì)于當(dāng)前用戶是否可執(zhí)行,如果可執(zhí)行,返回0,否則返回1:
[ test -x filename ] && echo executable || echo non-executable
也可以相同的方式檢查文件的其他權(quán)限,比如 r 和 w。在此可使用的其他常用參數(shù)包括:
命令 | 描述 |
-e | 目錄/文件是否存在 |
-f | 是否為文件 |
-d | 是否為目錄 |
-s | 文件大小是否大于0 |
-L | 是否為符號(hào)鏈接 |
-S | 是否為套接字(socket) |
在 bash 腳本中使用 test 命令
上面的例子我們是使用的一行代碼做的演示,除此以外,我們還可以在 bash 腳本中使用 test 命令以及 if else 分支條件。
下面我們來看一個(gè)簡單的例子,傳遞參數(shù)用于比較兩個(gè)數(shù)字:
#!/bin/bash
大家可以執(zhí)行一下,看看結(jié)果,如下圖所示:文章來源:http://www.zghlxwxcb.cn/news/detail-731302.html
文章來源地址http://www.zghlxwxcb.cn/news/detail-731302.html
到了這里,關(guān)于bash中執(zhí)行比較的幾種方法的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!