我写了一个小命令来编译每个目录中的每个C文件,我有:
find $1 -type f -name '*.c' -exec sh -c 'gcc {} -o $(dirname {})/$(basename {} .c)' \;
并且它编译了所有内容,但是我希望它能显示正在编译的每个文件的状态,并在每个文件完成时显示,但是如果有想法我就会出来。
如果有人可以提供帮助我会喜欢它!
答案 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}}