if g++ test.cpp > /dev/null 2>&1
then
./a.out
else
g++ test.cpp
fi
如果 gcc 没有返回错误或打印错误,我正在编写一个 shell 脚本来运行。如何在不第二次编译代码的情况下打印错误?
好吧,最简单的事情是:
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
如果通过打印错误仅表示标准错误的输出,那么您可以这样做
g++ test.cpp >/dev/null && ./a.out
但是,更一般地,将输出重定向到文件,如 depesz 的回答,是最简单的方法,它还为您提供了根据您认为适合自己目的来操纵该输出的能力。任何其他技巧都可能存在可移植性问题,但请记住,重定向可能由于其自身原因而失败(文件不可写,磁盘上没有剩余空间等)。