我有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