#!/bin/bash
outbound=/home/user/outbound/
putfile=DATA_FILE_PUT_*.CSV
cd $outbound
filecnt=0
for file in $putfile; do let filecnt=filecnt+1; done
echo "Filecount: " $filecnt
因此,當出站目錄中有文件時,此代碼運行良好。我可以將文件放入出站路徑,只要它們與putfile掩碼匹配,文件就會按預期遞增。bash:變量中帶有通配符的文件名
問題出在哪裏,如果我在沒有文件位於$outbound
的情況下運行這個。 如果有零個文件那麼$filecnt
仍然會返回一個1
但我希望它返回0
如果沒有文件那裏。
我是否缺少一些簡單的東西?
請注意,如果存在包含換行符(通常不會發生,但可能是健壯性或安全問題)的文件名,則此功能無效。 – Gilles
@Gilles感謝您的反饋。同意你'ls'可能導致這樣的問題。那麼我寧願'find'然後''wc'。我相信'find'足夠強大。糾正我,如果我錯了 – jkshah
這是同樣的問題:'find'是健壯的,但然後'wc -l'仍然會計數行而不是文件名。你可以使用'find ... -print0 | tr -dc'\ 0'| wc -c',但在bash內部進行計數更容易。從'find'開始計數將會遍歷子目錄(如果有的話),這不在原始需求中。 – Gilles