每天一個 Linux 命令: test 命令

1. 命令簡介

test 用於檢查某個條件是否成立,它可以進行數值、字符串和文件三個方面的測試。本文介紹的是 GNU 版本的 test,其它版本(如 POSIX 版)的實現可能會有所不同。

2. 命令格式

test
test EXPRESSION

省略表達式 EXPRESSION 默認爲 false。[] 實際上是 Bash 中 test 命令的簡寫,即所有的 test EXPRESSION 等於 [EXPRESSION]。

3. 選項說明

--help
 顯示幫助信息並退出
--version
 顯示版本信息並退出

# 1.邏輯運算
! EXPRESSION
 邏輯非,EXPRESSION 爲 false 返回 true
EXPRESSION1 -a EXPRESSION2
 邏輯與,兩個表達式均爲 true 返回 true
EXPRESSION1 -o EXPRESSION2
 邏輯或,兩個表達式只要有一個爲 true 返回 true

# 2.數值間的比較
INTEGER1 -eq INTEGER2
 兩整數是否相等
INTEGER1 -ne INTEGER2
 整數 INTEGER1 是否不等於 INTEGER2
INTEGER1 -gt INTEGER2
 整數 INTEGER1 是否大於 INTEGER2
INTEGER1 -ge INTEGER2
 整數 INTEGER1 是否大於等於 INTEGER2
INTEGER1 -lt INTEGER2
 整數 INTEGER1 是否小於 INTEGER2
INTEGER1 -le INTEGER2
 整數 INTEGER1 是否小於等於 INTEGER2

# 3.字符串的比較
-n STRING
 字符串不爲空返回 true
-z STRING
 字符串爲空返回 true
STRING1 = STRING2
 字符串相等返回 true
STRING1 != STRING2
 字符串不相等返回 true

# 4.文件的比較與類型判斷
FILE1 -ef FILE2
 兩個文件是否爲同一個文件。主要看文件設備號與 inode 是否一致
FILE1 -nt FILE2
 文件 FILE1 是否比 FILE2 新(修改時間新)
FILE1 -ot FILE2
 文件 FILE1 是否比 FILE2 舊(修改時間舊)
-b FILE
 文件存在且是塊(block)設備文件
-c FILE
 文件存在且是字符(character)設備文件
-d FILE
 文件存在且是目錄(directory)
-e FILE
 文件存在(exist)返回 true
-f FILE
 文件存在且是普通文件
-g FILE
 文件存在且設置了 SGID
-G FILE
 文件存在且屬於有效組ID
-h FILE
 文件存在且是軟鏈接。同 -L
-k FILE
 文件存在且設置了粘着位(Sticky Bit)
-L FILE
 文件存在且是軟鏈接。同 -h
-O FILE
 文件存在且屬於有效用戶ID
-p FILE
 文件存在且屬於命名管道
-r FILE
 文件存在且可讀
-s FILE
 文件存在且內容不爲空
-S FILE
 文件存在且是一個套接字(socket)
-t FD
 文件描述符是在一個終端打開的
-u FILE
 文件存在且設置了 SUID 位
-w FILE
 文件存在且且可寫
-x FILE
 文件存在且可執行

注意:

(1)test 擁有選項 --help 與 --version,但無法使用。test 將這兩個選項當做非空的普通字符串進行處理,並返回 true;

(2)文件的比較與類型判斷,除了 -h 與 -L,其它所有的選項都對軟鏈接進行解引用。

4. 常用示例

(1)判斷數值是否相等。

test 0 -eq 0; echo $?
0

test 退出狀態碼等於 0 表示條件成立。

(2)判斷文件是否存在。

test -e /etc/passwd; echo $?
0

test 退出狀態碼等於 0 表示文件存在。

(3)判斷文件是否是同一個文件。

test /etc/passwd -ef /etc/shadow; echo $?
1

test 退出狀態碼等於 1 表示不是同一個文件。

轉自:戀貓大鯉魚 

dablelv.blog.csdn.net/article/details/103047324

本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源https://mp.weixin.qq.com/s/8CFWC2EC-v5yF7cNV_Efcw