简单的bash代码

时间:2014-05-10 11:17:35

标签: bash shell

我刚刚开始学习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文件,然后打印所有行的第一列。

我错了吗?有人可以向我解释代码吗?

1 个答案:

答案 0 :(得分:1)

它计算当前目录中所有.c文件中的行数,并输出所有文件中的总行数。

find . -name "*.c"列出所有以.c

结尾的文件

for循环遍历所有这些文件,然后wc -l用于打印特定文件中的行数。因为wc -l的默认输出是<$bytes> <$filename>,所以awk '{print $1}用于返回输出的第一列,即字节数,忽略文件名。

它存储在S变量中,每次都附加在for循环中。最后它打印了总计。