萬盛學電腦網

您现在的位置: 萬盛學電腦網 >> 作業系統 >  >> Linux 教學

Linux test 命令詳解:檔案測試、條件判斷與返回值實戰範例

test(或 [ ])是 Shell 腳本中進行條件判斷的核心命令,支援檔案屬性、字串比較、整數比較等測試。本文整理常用檔案測試運算子、返回值機制與實戰範例,幫助你撰寫健壯的條件判斷邏輯。

test 命令測試示意圖

核心概念

  • 返回值:0 代表真(True/成功),非零代表假(False/失敗/錯誤碼)。
  • 取得上一個命令返回值:echo $?
  • 兩種寫法等價:test -f file ⇔ [ -f file ](注意括號內側須有空格)。

常用檔案測試運算子

實戰範例

範例 1:判斷目錄是否存在並建立

DIR="/home/www"
if [ ! -d "$DIR" ]; then
    mkdir -p "$DIR"
    echo "建立目錄 $DIR"
fi

範例 2:檢查檔案可讀且非空

FILE="/etc/passwd"
if [ -r "$FILE" ] && [ -s "$FILE" ]; then
    echo "$FILE 可讀且有內容"
fi

範例 3:比較兩個檔案新舊

if [ "file1" -nt "file2" ]; then
    echo "file1 較新"
fi

範例 4:結合命令返回值判斷

ls /home/kkk 2>/dev/null
if [ $? -ne 0 ]; then
    echo "目錄不存在或無權限"
fi

字串與整數比較(補充)

運算子說明
-e檔案/目錄存在
-f一般檔案
-d目錄
-r可讀
-w可寫
-x可執行
-s檔案大小 > 0
-L / -h符號連結
-SSocket
-b區塊裝置
-c字元裝置
-p命名管道 (FIFO)
-O擁有者為當前使用者
-G群組為當前群組
-ntfile1 比 file2 新
-otfile1 比 file2 舊
-ef同一 inode (硬連結)
類型運算子說明
字串= / !=相等 / 不相等
-z長度為零
-n長度非零
< / >字典序比較(需在 [[ ]] 中使用)
=~正則比對(需 [[ ]])
整數-eq / -ne等於 / 不等於
-lt / -le小於 / 小於等於
-gt / -ge大於 / 大於等於

最佳實務建議

  • 優先使用 [[ ]](Bash/Zsh/Ksh),支援 && || < > =~ 且不需轉義。
  • 變數務必雙引號包裹:"$VAR",避免空值導致語法錯誤。
  • 檔案測試建議加 -e 先確認存在,再測試型別/權限。

小結

熟練掌握 test/[ ]/[[ ]] 的檔案測試、字串/整數比較與返回值判斷,是撰寫可靠 Shell 腳本的基石。建議收藏常用運算子表,實作時速查。

copyright © 萬盛學電腦網 all rights reserved