【发布时间】:2012-02-07 22:03:37
【问题描述】:
我有 2 个不同的脚本做的基本相同:计算当前目录中的子目录:
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选项以计算子目录。 -
@choroba 有正确的答案,但一般来说,我推荐
count=$(find . -printf x | wc -c)- 适用于 any 文件。
标签: bash while-loop pipe