我怎样才能回应编译的状态?

时间:2013-05-13 09:42:05

标签: linux shell compilation

我写了一个小命令来编译每个目录中的每个C文件,我有:

find $1 -type f -name '*.c' -exec sh -c 'gcc  {} -o $(dirname {})/$(basename {} .c)' \;

并且它编译了所有内容,但是我希望它能显示正在编译的每个文件的状态,并在每个文件完成时显示,但是如果有想法我就会出来。

如果有人可以提供帮助我会喜欢它!

2 个答案:

答案 0 :(得分:1)

运行echo $?后,您可以gcc显示其返回状态。如果文件编译它将是0,如果不是,我认为它将是1。但是对于不同的错误可能会有不同的返回值,我对此并不确定。

答案 1 :(得分:1)

这可能是一个学术问题,但在{}的参数中多次使用find是不可移植的。同样,当{}不是参数中唯一的字符串时,期望{}扩展为文件名是不可移植的。 (也就是说,整个参数必须完全是gcc)。此外,明确而不是make使用find $1 -type f -name '*.c' -exec sh -c 'gcc $0 -o $(dirname $0)/$(basename $0.c) && echo $0' {} \; 可能是错误的方法。也就是说,您可以简单地回显成功编译的每条路径:

find $1 -type f -name '*.c' -exec bash -c 'gcc $0 -o ${0%.c}.o && echo $0' {} \;

另外,如果你可以用bash简化:

{{1}}