我正在嘗試查找目錄中的檔案數。我正在使用 ls 命令。根據檔案數,我需要顯示計數和一條訊息。腳本未提供所需的輸出。任何幫助將不勝感激。
#!/bin/sh
FILECOUNT = $(ls /opt/report/ | grep *.ZIP_30 | wc -l);
if [ $FILECOUNT -gt "0" ]; then
echo "Statistic.filecount: $FILECOUNT";
echo "Message.filecount: Normal";
else
echo "Statistic.filecount: $FILECOUNT";
echo "Message.filecount: Warning";
fi;
exit 0;
uj5u.com熱心網友回復:
一般建議不要決議 的結果ls,因此我建議您使用以下命令:
find /opt/report/ -maxdepth 1 -name "*.ZIP_30" | wc -l
uj5u.com熱心網友回復:
您有語法錯誤。
=外殼中不允許有空格,因此:
filecount=$(grep -c ZIP_30 /opt/report/*)
uj5u.com熱心網友回復:
除了Gilles 指出=的語法錯誤和William Pursell評論的參考問題之外,還有一種更簡單的方法來計算檔案的數量:使用 shell!
shopt -s nullglob
set -- /opt/report/*.ZIP_30
filecount=$#
if [ "$filecount" -gt 0 ]; then
echo "Statistic.filecount: $filecount";
echo "Message.filecount: Normal";
else
echo "Statistic.filecount: $filecount";
echo "Message.filecount: Warning";
fi;
exit 0;
基本思想是使用 shell 的通配符(通配符)擴展功能將位置引數設定為匹配檔案的串列。在完全沒有匹配檔案的情況下,我使用了 bash shell 功能(nullglob)。通常,shell 會將/opt/report/*.ZIP_30文本保留為空匹配的結果,但我們正在嘗試對檔案進行計數,因此我們希望在沒有任何匹配檔案時消失。該$#變數獲取位置引數的數量,這為我們提供了檔案計數。我還小寫了 shell 變數號,作為防止破壞內置 shell 變數名的好習慣。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/476208.html
