我想制作一个快速脚本来计算我的.scala文件所包含的行数:
presto-base-jdbc
但不幸的是,这打印
#!/bin/bash
counter=0;
find -iname "*.scala" | while read f; do
lc=$(cat $f | wc -l);
counter=$((counter+lc));
echo "$lc $counter";
done
echo "final result: $counter";
这里有什么问题?
答案 0 :(得分:3)
问题是由于您在while循环之前使用pipe而引起的。
通过这样做,bash
会自动创建一个新的子shell。您执行的所有修改都将在新上下文中执行,并且在上下文关闭时不会传播。
改为使用process substitution:
#!/bin/bash
counter=0;
while read f; do
lc=$(cat $f | wc -l);
counter=$((counter+lc));
echo "$lc $counter";
done < <(find -iname "*.scala")
echo "final result: $counter";