因此,我是整个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错误处理消息?与警告相同并且可以完美编译吗?
gcc
还返回0
警告的退出代码。因此,您将通过以下方式来区分自己:
for F in *.c; do
out=$(gcc -c -Wall -o ${F%.c} $F 2>&1)
if [ $? -ne 0 ]; then
echo $F Errors
else
if grep "warning:" <<<"${out}" >/dev/null ; then
echo $F Warnings
else
echo $F OK
fi
fi
done
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句