【发布时间】:2014-03-09 20:42:40
【问题描述】:
所以我是整个 Bash 脚本场景的新手,但我正在编写一个脚本来编译一个目录中的所有 .c 文件,我已经成功地这样做了:
for F in *.c; do
gcc -c -Wall -o ${F%.c} $F
done
一切正常,但我希望输出看起来像:
ex1.c Errors
ex2.c OK
ex3.c Warnings
所以基本上我希望“Ok”的退出状态为 0(一切正常),“Warnings”的退出状态为 1(警告,但没有错误),“Errors”的退出状态为 2(未编译)。
我很难弄清楚如何做这样的事情。我四处搜索,找不到任何我发现有用的东西。不过,我很可能忽略了一些事情。
编辑:无论如何都会说:如果 gcc -Wall file.c 有错误,那么只说 Error 而不是完整的 GCC 错误处理消息?与警告和完美编译一样吗?
【问题讨论】:
-
在 bash 中,您可以通过
echo $?返回上一个进程调用的退出状态。但是,除了零/非零之外,gcc 退出状态和您想要的内容之间的映射不会是简单的,甚至是不可能的。你看过SCons吗?我不能告诉你重点,无论是关于 bash 还是编译一堆目标文件。如果你有一个项目,那么面向 DAG 的构建器就是你想要的。 -
有没有办法说:如果gcc file.c有错误那么echo Error?等等,等等?