0
if  g++ test.cpp > /dev/null 2>&1
then
    ./a.out
else
    g++ test.cpp
fi

如果 gcc 没有返回错误或打印错误,我正在编写一个 shell 脚本来运行。如何在不第二次编译代码的情况下打印错误?

4

2 回答 2

3

好吧,最简单的事情是:

if g++ test.cpp > /tmp/some_temp_file 2>&1
then
    ./a.out
else
    cat /tmp/some_temp_file
fi
rm /tmp/some_temp_file
于 2013-06-25T17:42:03.977 回答
2

如果通过打印错误仅表示标准错误的输出,那么您可以这样做

g++ test.cpp >/dev/null && ./a.out

但是,更一般地,将输出重定向到文件,如 depesz 的回答,是最简单的方法,它还为您提供了根据您认为适合自己目的来操纵该输出的能力。任何其他技巧都可能存在可移植性问题,但请记住,重定向可能由于其自身原因而失败(文件不可写,磁盘上没有剩余空间等)。

于 2013-06-25T20:57:32.810 回答