Вы можете обернуть его и вернуть ошибку, если gcc записал что-либо в stderr.
Выполните GCC, перенаправьте stderr в файл, поместите файл в stderr:
temp=$(tempfile)
trap rm "$temp" EXIT
gcc "$@" 2>"$temp"
ret=$?
cat "$temp" >&2
Верните gccвыход из состояния, если оно не 0:
if [ "$ret" != 0 ]; then
exit $ret;
}
Возвращает 1, если файл не пустой:
if [ $(stat --format=%s "$temp") != "0" ]; then
exit 1;
}