我有2個不同的腳本做基本相同:在當前目錄計數子目錄:的bash while語句
c=0
ls -l | grep "^d" | while read zeile
do
c=`expr $c + 1`
echo $c
done
echo "Subdirs: $c"
和
c=0
while read zeile
do
c=`expr $c + 1`
echo $c
done < <(ls -l | grep "^d")
echo "Subdirs: $c"
我的問題是,在第一個版本,「 c「在while循環結束後似乎失去了它的價值。
輸出
1)
1
2
3
Subdirs: 0
2)
1
2
3
Subdirs: 3
你們誰能給我解釋一下,爲什麼發生這種情況?
預先感謝 亞歷
或者,您也可以使用'find。 -maxdepth 1 -type d | wc -l'來獲得你的計數(雖然它也會計算當前目錄)。省略'-maxdepth 1'選項以統計子目錄。 – 2012-01-11 15:19:58
@choroba有正確的答案,但一般來說,我會推薦計數文件'count = $(find。-printf x | wc -c)' - 與任何*文件一起使用。 – l0b0 2012-01-12 15:36:28