我刚刚开始学习Bash,我在理解它时遇到了一些问题。我有以下bash脚本,我需要知道它的作用:
#!/bin/bash
S=0
for f in $(find . -name "*.c");
do
S=$(($S + $(wc -l $f | awk ’{ print $1 }’)));
done
echo $S
我认为它会查找目录中的所有.c文件,然后打印所有行的第一列。
我错了吗?有人可以向我解释代码吗?
答案 0 :(得分:1)
它计算当前目录中所有.c文件中的行数,并输出所有文件中的总行数。
find . -name "*.c"
列出所有以.c
for循环遍历所有这些文件,然后wc -l
用于打印特定文件中的行数。因为wc -l的默认输出是<$bytes> <$filename>
,所以awk '{print $1}
用于返回输出的第一列,即字节数,忽略文件名。
它存储在S
变量中,每次都附加在for循环中。最后它打印了总计。