所以我正在嘗試撰寫一個腳本,在其中我將檔案夾名稱作為命令列引數傳遞。如果該檔案夾存在,腳本將搜索該檔案夾中的檔案并輸出所有詳細資訊。我的腳本如圖所示
for entry in "$1"/*
do
data = $(stat $entry)
echo "${data}"
done
當我運行它給我以下輸出。
./test.sh: line 3: data: command not found
我從這里得到了這個想法:Stat 命令
有人可以幫助
我有什么問題嗎我嘗試了一些變化,比如讓 $entry 進入 entry 和 echo $data
uj5u.com熱心網友回復:
您的主要問題是您在等號運算子周圍放置了空格字符,您必須洗掉它們:
data=$(stat $entry)
如果您的檔案夾或任何檔案名包含空格,在引號之間傳遞變數也是一種很好的做法:
data=$(stat "$entry")
我假設您將值存盤到變數中,因為您的意圖是將其用于演算法。如果您只想呼叫stat列出您的檔案,您可以簡單地呼叫:
stat "$1"/*
uj5u.com熱心網友回復:
洗掉空格之間data和$(stat entry)。
data=$(stat $entry)
您還可以通過echo "$(stat entry)"完全寫入和洗掉資料變數來簡化此操作。
for entry in "$1*/"; do
echo "$(stat $entry)"
done
此外,您可能需要獲取 中每個檔案的串列$1,因為僅列出目錄可能不起作用。你可以在 $1 中找到檔案$(find "$1" -type f)
for entry in "$(find "$1" -type f)"; do
echo "$(stat $entry)"
done
一條線: for entry "$(find "$1" -type f)"; do echo "$(stat $entry)"; done
當然,這不會考慮名稱中帶有空格的檔案。在這些情況下,撰寫一個包含檔案串列的陣列將有所幫助。
編輯:在 $1 左右添加雙引號
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/373452.html
