用於檢查比參數更新的檔案的腳本,幫助使用 -nt

用於檢查比參數更新的檔案的腳本,幫助使用 -nt

我正在嘗試製作一個腳本,顯示目錄中的文件比作為參數給出的文件更新,但我似乎遇到了問題。目前我有:

for f in *; do 
    if [["$f" -nt "$1"]]; then 
        echo "$f"
    fi 
done

然而,這一直給我一個錯誤,無法在引用正在迭代的檔案時找到命令。如何解決此腳本的問題?

答案1

[[和周圍需要空間]]

for f in *; do
    if [[ "$f" -nt "$1" ]]; then
        echo "$f"
    fi
done

如果沒有空格,您將收到一系列「找不到命令」錯誤。這是因為 shell 尋找名為 的指令[["$f"但找不到它。您要執行的命令是[[

選擇

無需循環:

find . -maxdepth 1 -newer "$1"

答案2

您需要在 後面留一個空格[[,在 之前再留一個空格]]。這是來自 的繼承[,傳統上它是一個實際的可執行檔(/bin/[符號連結到/bin/test) - 您需要一個空格來強制將其作為[參數expression而不是[expression.

while[[是一個 bash 關鍵字,它有類似的要求。

[通常也建議盡可能在腳本中使用 POSIX 相容版本。[[不是標準的,因此不適用於所有 POSIX shell。

相關內容